搭建ip代理池,python 代理ip池

  搭建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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: