首页 > 编程知识 正文

python ip地址处理(python编程例子)

时间:2023-05-06 12:42:18 阅读:813 作者:522

一、建立IP代理池的思路:

当你是爬虫的时候,访问过于频繁难免会出现IP被屏蔽的情况,单个本地IP不足以进行大规模抓取,也不想买付费代理,所以搭建IP代理池是非常必要的。想法如下:

图1

二、建立IP代理池的步骤:

爬代理IP:搜索选择代理IP网站,选择免费代理;代码如下:# _ * _编码:UTF-8 _ * _

#由张杰开发

#创作时间:2020年12月29日17:58

#文件名:爬网代理IP。巴拉圭

#开发工具:PyCharm

导入请求

进口lxml.html

导入操作系统

标题={ 0

用户代理' : ' Mozilla/5.0(Windows NT 10.0;Win64x64)applebwebkit/537.36(KHTML,像Gecko)Chrome/87 . 0 . 4280 . 88 Safari/537.36’

}

URL _ list=[' http://www . xici daili.com/nn/% r ' % I代表范围(1,10)中的I]

ip_list=[]

对于url_list:中的url

r=requests.get(url,headers=headers)

etree=lxml . html . from string(r . text)

IPS=etree . XPath('//tr[@ class=' odd ']')

对于ips:中的ip

IP=ip.xpath('//td/text()')

ip=IP[0] ':' IP[1]

ip_list.append(ip)

f=打开(' ip.txt ',' wb ')

f.write(','。加入(ip_list)。编码(' utf-8 ')

F.close(验证代理ip:通过网络访问验证代理IP的可用性和访问速度,从ip.txt文件中提取之前爬取的代理IP地址,分别尝试代理IP访问一个网站的主页,只保留响应时间在2秒以内的IP,保存在qip.txt中,代码如下:

# _*_编码:UTF-8 _*_

#发展作者:关中老玉米

#创作时间:2020年12月29日18:27

#文件名:身份验证代理IP。巴拉圭

#开发工具:PyCharm

导入请求

ip_list=open('ip.txt ')。读取()。拆分(',')

标题={ 0

用户代理' : ' Mozilla/5.0(Windows NT 6.1;Win64x64)applebwebkit/537.36(KHTML,像Gecko)Chrome/59 . 0 . 3071 . 115 Safari/537.36’

}

q

Url='https://www.baidu.com' #使用百度测试IP是否可以正常上网。

我在IP _ list: #设置超时为2秒,超时为不可用的IP。

r=requests.get(url,代理={'http': 'http://' ip[i]},标头=标头,超时=2)

if r.text:

qip.append(qip[i])

else:

继续

f=打开(' quality_ip.txt ',' wb ')

f.write(','。加入(quality_ip)。编码(' utf-8 ')

F.close()使用代理IP:建立IP代理池后,使用代理IP有两种方式。

# _*_编码:UTF-8 _*_

#由张杰开发

#创作时间:2020年12月31日18:03

#文件名:使用代理IP。巴拉圭

#开发工具:PyCharm

# (1)使用随机IP,代码如下:

随机导入

导入请求

ip_list=open('quality_ip.txt ')。读取()。拆分(',')

标题={ 0

用户代理' : ' Mozilla/5.0(Windows NT 10.0;Win64x64)applebwebkit/537.36(KHTML,像Gecko)Chrome/87 . 0 . 4280 . 88 Safari/537.36’

}

url='http://******** '

r=requests.get(url,代理={ ' http ' : ' http://' random . choice(IP _ list)},headers=headers)

# (2)由于自由代理时间限制短,后续抓取任务容易失败,所以当出现访问错误(响应码不等于200)时,更改IP,代码如下:

ip_list=open('qip.txt ')。读取()。拆分(',')

标题={ 0

用户代理' : ' Mozilla/5.0(Windows NT 10.0;Win64x64)applebwebkit/537.36(KHTML,像Gecko)Chrome/87 . 0 . 4280 . 88 Safari/537.36’

}

对于ip_list:中的ip

对于范围内的I(len(URL _ list)):

r=requests.get(url_list[i],代理={'http': 'http://' ip},标头=标头)

if r.status_code!=200:

Break教材不易编写,希望能帮助更多感兴趣的学习者,让工作学习顺利进行;请关注并转发。以后会有更多的源代码分享给更多的学习者使用。非常感谢

作者:关中老玉米

日期:2020年12月31日

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。