python爬虫利用代理池更换IP的方法步骤
0.前言
周日在爬一个国外网站的时候,发现用协程并发请求,并且请求次数太快的时候,会出现对方把我的服务器IP封掉的情况。于是网上找了一下开源的python代理池,这里选择的是star数比较多的proxy_pool
1.安装环境
#安装python虚拟环境,python环境最好为python3.6,再往上的话,安装依赖时会报错 sudoaptupdate sudoaptinstallpython3.6 pip3installvirtualenv virtualenvvenv--python=python3.6 sourcevenv/bin/activate #安装redis sudoaptinstallredis-server #启动redisserver redis-server
2.安装依赖
gitclonehttps://github.com/jhao104/proxy_pool.git cdproxy_pool pipinstall-rrequirements.txt
3.修改配置文件
#修改setting.py #配置API服务 HOST="0.0.0.0"#IP PORT=5010#监听端口 #配置数据库 #以下为三个示例,根据redis的配置,选择其中一种即可 #一般启动redis时如果没有配置文件,那么选择第一种即可 #1.RedisIP:127.0.0.1Port:6379 DB_CONN='redis://@127.0.0.1:6379' #2.RedisIP:127.0.0.1Port:6379Password:123456 DB_CONN='redis://:123456@127.0.0.1:6379' #3.RedisIP:127.0.0.1Port:6379Password:123456DB:15 DB_CONN='redis://:123456@127.0.0.1:6379/15' #配置ProxyFetcher PROXY_FETCHER=[ "freeProxy01",#这里是启用的代理抓取方法名,所有fetch方法位于fetcher/proxyFetcher.py "freeProxy02", #.... ]
4.启动
#可以用tmux开三个窗口 #启动调度程序 pythonproxyPool.pyschedule #启动webApi服务 pythonproxyPool.pyserver
5.测试
importrequests defget_proxy(): returnrequests.get("http://127.0.0.1:5010/get/").json() defdelete_proxy(proxy): requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy)) #yourspidercode defgetHtml(): #.... retry_count=5 proxy=get_proxy().get("proxy") whileretry_count>0: try: html=requests.get('http://www.example.com',proxies={"http":"http://{}".format(proxy)}) #使用代理访问 returnhtml exceptException: retry_count-=1 #删除代理池中代理 delete_proxy(proxy) returnNone
更多的用法和文档请参考:document和https://github.com/jhao104/proxy_pool
到此这篇关于python爬虫利用代理池更换IP的方法步骤的文章就介绍到这了,更多相关python代理池更换IP内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。