ip代理池是python爬虫程序开发中会使用到的一个东西,它的意思就是ip地址的集合 。而在之前的一些文章之中小编也给大家介绍过了ip代理池如何创建,但是这些ip都是没有经过验证是否有效的 。而这篇文章会来给大家分享有效ip代理池的构建教程,往下看看吧 。
文章插图
1.那么第一步还是一样的操作,将需要使用的模块给导入到python程序之中 。那么这次需要使用到的模块有requests、re、telnetlib三个,代码如下所示:
import requestsimport reimport telnetlib2.第二步就是去定义三个变量来保存不同的数据,第一个变量url放的是可以获取到免费ip的网址 。第二个变量header则是一个请求时的头文件信息,具体数据可以根据需要访问的网页修改 。第三个则是请求网址后返回的ip地址文本信息,代码如下:
url='http://www.66ip.cn/nmtq.php?getnum=100000&isp=0&anonymoustype=4&start=&+/ports=&export=&ipaddress=&area=2&proxytype=0&api=66ip'header = {'User-agent':'','Connection':'close'}page_text = requests.get(url=url,headers=header).text3.那么在text这个字符串之中实际上就是已经包含了可以去使用的ip地址,那么要在这些杂乱的数据中将这些ip地址的具体信息取出来就得使用到正则表达式了 。编写出一个正则规则,然后调用findall()方法将所有匹配的字符串都返回到列表内,代码如下:
p = r'(?:((?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])+/\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5]))+/\D+?(6[0-5]{2}[0-3][0-5]|[1-5]\d{4}|[1-9]\d{1,3}|[0-9]))'iplist = re.findall(p,page_text)【Python中IP代理池怎么构建?Python如何构建有效的IP代理池】4.那么最后一步就是比较简单了,循环遍历这个保存了代理ip的列表 。然后调用telnetlib模块测试一下这个ip是否有效,有效的标准就是可以快速访问网站并且不会被当做爬虫拦截 。有效的话就将其写入到文件之中,代码如下:
for i in iplist: ip = i[0]+':'+i[1]+'\n' try: telnetlib.Telnet(i[0], port=i[1], timeout=3) else: print(ip) with open('ip.txt', 'a+', encoding='utf-8') as fp: fp.write(ip)以上就是关于“Python中IP代理池怎么构建?Python如何构建有效的IP代理池”的全部内容了,希望对你有所帮助 。
推荐阅读
- Python怎么删除文件?使用os.remove方法如何删除文件?
- 什么是Python中的字符串?如何创建一个Python字符串?
- Python使用函数如何判断一个数是否为整数?python判断一个数是否为整数的方法有哪些?
- Python怎么样创建txt文件?python创建txt文件并写入的方法
- Python为什么打不开.py文件?如何解决Python打不开.py文件?
- 使用IDLE编辑器如何运行Python文件?使用IDLE运行Python文件的方法
- Python用什么软件写爬虫?Python爬虫软件有哪些?
- Python图像手绘效果怎么实现?Python如何画出手绘风格数据图表
- Python双向链表怎么删除元素?双向链表结构如何删除节点
- Python中双向链表如何插入元素?Python双向链表怎么添加节点