当前位置: 首页 > 后端技术 > Python

爬虫程序部署后的常见问题

时间:2023-03-26 19:04:27 Python

爬虫程序在本地测试运行通过后,有同学迫不及待的将程序部署到服务器上正式运行,运行一段时间后,出现各种错误和甚至程序退出了。这里整理出一些常见问题供参考:  1。通过本地调试只是意味着程序从请求到数据分析的过程已经完成,但并不意味着程序可以长期稳定地采集数据。对于自动化测试,一般建议按照一定的次数或时间进行稳定性测试,看网站的响应情况和反爬情况  2。程序需要为数据处理添加异常保护。如果对数据要求不高,可以使用单线程Run,如果对数据要求高,建议加入多线程运行,提高程序的处理性能  3。根据采集的数据要求和网站情况,配置合适的爬虫代理,可以降低网站被反爬的风险,爬虫在选择和比较代理时,要重点关注网络延迟、IP池大小和请求成功率,以便我们可以快速选择合适的爬虫代理产品  下面提供一个demo程序,用于统计请求数和IP分配,也可以根据需要修改为数据采集程序:#!-*-encoding:utf-8-*-importrequestsimportrandomimportrequests.adapters#要访问的目标页面targetUrlList=["https://","https://","https://",]#代理服务器(产品官网h.shenlongip.com)proxyHost="h.shenlongip.com"proxyPort=""#代理认证信息proxyUser="用户名"proxyPass="密码"proxyMeta="http://%(user)s:%(pass)s@%(host)s:%(port)s"%{"host":proxyHost,"port":proxyPort,"user":proxyUser,"pass":proxyPass,}#设置http和https访问以使用HTTP代理proxies={"http":proxyMeta,"https":proxyMeta,}#设置IP切换头tunnel=random.randint(1,10000)headers={"Proxy-Tunnel":str(tunnel)}类HTTPAdapter(requests.adapters.HTTPAdapter):defproxy_headers(self,proxy):headers=super(HTTPAdapter,self).proxy_headers(proxy)ifhasattr(self,'tunnel'):headers['Proxy-Tunnel']=self.tunnelreturnheaders#访问网站3次,使用相同的隧道标志,保持相同的外网IPforiinrange(3):s=requests.session()a=HTTPAdapter()#设置IP切换头a.tunnel=tunnels.mount('https://',a)forurlintargetUrlList:r=s.get(url,proxies=proxies)printr.文本