将代理IP池添加到爬行器
在运行爬行器的过程中,请求次数过多,经常会阻止IP,但在这种情况下,必须通过代理IP进行解决。 代理IP的原理简单来说,就像在本机和web服务器之间建立中继站,将本机的请求传递给代理IP服务器,然后从本机向web服务器发送请求,将响应返回给本机。
下载代理IP池
这是github上很受欢迎的代理池,使用Redis数据库。 因为是免费的代理,质量不高,但足够大家学习。 其中可以自行设置收费的代理ip,但本文不写。
地址: https://github.com/jhao 104/proxy _ pool
下载后,在cmd上进入解压缩路径,然后运行此命令安装依赖关系。
pip install -r requirements.txt
在解压缩的文件夹中找到并修改Configsetting.py,notepad或您的ide。
然后在cmd中进入Run目录运行。
pythonmain.py
代理池成功打开。
打开RedisDesktopManager。
接下来,测试一下这个代理池是否可用。
取天天基金网“热门主题”基金名称,先用这个代理池的demo https://github.com/jhao 104/proxy _ pool一直拉。打开http://fund.eastmoney.com/,按F12打开开发者工具
在控制台栏中输入document.charset,回到车上即可看到网页代码。 分析网页元素的位置
代码如下。
importrequestsfrombs4importbeautifulsoupdefget _ proxy (: return requests.get (' http://127.0.0.133605010/get proxt proxy . format(proxy ) (def getHtml ) ) : retry_count=5 #容错次数proxy=get_proxy ) ) 获取代理ipwhileretry _ count 03360 try : html=requests.get (' http://fund.eastmoney.com/',proxies={ ' http ' 33: ) 添加代理参数proxies html.encoding='utf-8' #以使用代理访问returnhtml.teter的html文本except exception : retry _ count-- 如果从代理池中删除代理delete_proxy(proxy ) return None #的请求失败,则为none#print(gethtml ) ) def get _ info (3360 # html=getHtml ) ) )的soup=beautifulsoup(gethtml (,' lxml ) ) item=soup.find_all )、' div ',attrs={ '
————————————————
这是CSDN博客“zydpkq”的原始文章,符合CC 4.0 BY-SA版权协议。 请附上原文来源的链接和本声明。
原文链接: https://blog.csdn.net/weixin _ 41996197/article/details/89427121