以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

国内代理ip 免费代理ip地址

一、建立互联网协议(互联网协议)代理池的思路:

做爬虫时,遇到访问太频繁互联网协议(互联网协议)被封是难以避免的,而本地单个互联网协议(互联网协议)是不足以进行大规模爬取,并且自己并不想购买付费代理,那么,构建一个互联网协议(互联网协议)代理池是非常有必要的。思路如下:

图一

二、建立互联网协议(互联网协议)代理池的步骤:

爬取代理IP:搜索选择代理互联网协议(互联网协议)网站,选取免费代理;代码如下:# _*_编码:UTF-8 _*_#开发作者:张杰#创建时间:2020/12/29 17:58# 文件名称:爬取代理知识产权PY#开发工具:pycharimport请求导入lxml。html导入OS头={ ' User-Agent ' : ' Mozilla/5.0(Windows NT 10.0;win 64x 64)applebwebkit/537.36(KHTML,像壁虎)Chrome/87。0 .4280 .88 Safari/537.36 ' } URL _ list=[' http://www .西西代里。com/nn/% r ' % I针对范围(1,10)中的I]IP _ list=[]针对URL _ list :中的URL r=请求。get(URL,标头=标头)etree=lxml。html。来自字符串(r . text)加入(ip_list).编码(' utf-8 ')f .关闭(验证代理IP:通过网络访问来验证代理互联网协议(互联网协议)的可用性和访问速度,将之前爬取到的代理互联网协议(互联网协议)地址从ip.txt文件中提取出来,分别试用代理互联网协议(互联网协议)去访问某个网站首页,仅保留响应时间在2秒内的知识产权,并保存在QIP.txt中,代码如下:

# _*_编码:UTF-8 _*_#开发作者:关中老玉米# 创建时间:2020/12/29 18:27# 文件名称:验证代理知识产权PY#开发工具:pycharimport请求sip _ list=open(' IP。txt ').读取()。拆分(',')头={ ' User-Agent ' : ' Mozilla/5.0(Windows NT 6.1;win 64x 64)applebwebkit/537.36(KHTML,像壁虎)Chrome/59。0 .3071 .115 Safari/537.36 ' } qurl=' https://www .百度。com ' #用百度来测试互联网协议(互联网协议)是否能正常连网因为我在ip_list: #设置超时时间超时为2 s,超时则为不可用IP r=requests.get(url,代理={'http': 'http://' ip[i]},标头=标头,超时=2)如果r . text : qip追加(qip[I])else : continuef=open(' quality _ IP。txt ',' wb')f.write(,加入(质量_ip).编码(“utf-8”)f . close()使用代理IP:建立互联网协议(互联网协议)代理池之后,有以下两种使用代理互联网协议(互联网协议)的方式。

# _*_编码:UTF-8 _*_#开发作者:张杰#创建时间:2020/12/31 18:03# 文件名称:使用代理知识产权PY#开发工具:PyCharm# (1)使用随机知识产权,代码如下:导入随机导入请求sip _ list=open(' quality _ IP。txt ').读取()。拆分(',')头={ ' User-Agent ' : ' Mozilla/5.0(Windows NT 10.0;win 64x 64)applebwebkit/537.36(KHTML,像壁虎)Chrome/87。0 .4280 .88 Safari/537.36 ' } URL=' http://* * * * * * ' r=请求。获取(网址,代理={ ' http ' : ' http://' random。choice(IP _ list)},header=header)#(2)因为免费的代理时效很短,在后续的爬取任务中很容易失效,所以当出现访问错误(响应码不等于200)时,更换知识产权,代码如下:ip_list=open('qip.txt ').读取()。拆分(',')头={ ' User-Agent ' : ' Mozilla/5.0(Windows NT 10.0;win 64x 64)applebwebkit/537.36(KHTML,像壁虎)Chrome/87。0 .4280 .88 Safari/537.36 ' }对于ip_list:中的互联网协议(Internet Protocol的缩写)对于I在范围内(len(URL _ list)): r=请求。获取(URL _ list[I],代理={ ' http ' : ' http://' ip },header=header)if r . status _ code!=200:打破教材编制不易,希望能帮助到更多有兴趣的学习者,让工作和学习顺利进行;请您点赞关注并转发,后续将分享更多源码,让更多学习者使用。非常感谢!

作者:关中老玉米

日期:2020年12月31日