搭建ip代理池,python 代理ip池
本文实例讲述了大蟒实现互联网协议(互联网协议的缩写)代理池功能。分享给大家供大家参考,具体如下:
爬取的代理源为西刺代理。
用语言解析页面
用远程登录来验证互联网协议(互联网协议的缩写)是否可用
把有效的互联网协议(互联网协议的缩写)写入到本地文本文件(文本文件)中。当然也可以写入到redis、mongodb中,也可以设置检测程序当代理池中的互联网协议(互联网协议的缩写)数不够(如:小于20个)时,启动该脚本来重新获取ip,本脚本的代码也要做相应的改变。
# !/usr/友好的八宝粥/env python
# -*-编码:utf-8 -*-
# @版本:1.0
# @时间:2018/10/23上午10:40
# @作者:约曼
# @描述:
导入urllib.request
导入lxml.etree
导入telnetlib
导入操作系统
标题={
用户代理:‘Mozilla/5.0(麦金塔;英特尔Mac OS X 10 _ 12 _ 2)苹果WebKit/537.36(KHTML像壁虎)Chrome/70。0 .3538 .67 Safari/537.36
}
定义get_proxy(页码):
# 获取页面
req=URL库。请求。请求( http://www。西祠戴笠。com/nn/{ } ).格式(page_num),header=headers)#构造请求请求
响应=URL库。请求。urlopen(req)#发送请求
html=response.read()
html=html.decode(utf-8 )
#打印(html)
# 解析页面
proxy_list=[]
selector=lxml.etree.HTML(html)
行=选择器。XPath(//*[@ id= IP _ list ]//tr )
rows_total=len(行数)
row _ XPath _ head=//*[@ id= IP _ list ]//tr[
row _ IP _ XPath _ tail=]/TD[2]/text()
row _ port _ XPath _ tail=]/TD[3]/text()
对于范围内的I(1,rows_total):
IP _ XPath=row _ XPath _ head str(I 1)row _ IP _ XPath _ tail
port _ XPath=row _ XPath _ head str(I 1)row _ port _ XPath _ tail
ip=selector.xpath(ip_xpath)[0]
端口=选择器。XPath(port _ XPath)[0]
ip_port=ip :端口
代理列表附加(ip端口)
返回代理列表
# 检测代理互联网协议(互联网协议的缩写)是否可用
定义测试代理互联网协议(Internet Protocol的缩写)端口(代理互联网协议(Internet Protocol的缩写)端口):
打印(当前代理ip:{} .格式(代理互联网协议(Internet Protocol的缩写)端口))
ip_port=proxy_ip_port.split(:)
ip=ip_port[0]
port=ip_port[1]
# 用远程登录来验证互联网协议(互联网协议的缩写)是否可用
尝试:
telnetlib .Telnet(ip,端口,超时=10)
除了:
返回错误的
否则:
返回真实的
# 把有效的互联网协议(互联网协议的缩写)写入本地
定义写ip(代理ip):
带开(。/ip.txt , a )作为女:
f.write(proxy_ip )
# 删除文件
def del_file():
文件路径=。/ip.txt
如果os.path。存在(文件路径):
os.remove(文件路径)
定义运行():
del_file()
proxy_ip_port_list=[]
对于范围(1,6)中的我:#前5页
代理互联网协议(Internet Protocol的缩写)端口列表=获取代理
对于范围内的我(100):#一页有100条
代理互联网协议(Internet Protocol的缩写)端口=代理互联网协议(Internet Protocol的缩写)端口列表[我]
is_valid=测试代理互联网协议(Internet Protocol的缩写)端口(代理互联网协议(Internet Protocol的缩写)端口)
打印(有效)
如果有效:
# 写入互联网协议(互联网协议的缩写)到本地
写ip(代理互联网协议(Internet Protocol的缩写)端口)
if __name__==__main__ :
运行()
希望本文所述对大家计算机编程语言程序设计有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。