python建立ip代理池,爬虫代理池

  python建立ip代理池,爬虫代理池

  本文主要介绍Python爬虫构建代理ip池。文章围绕主题,介绍细节,具有一定的参考价值。可以参考需要的小伙伴,希望对你的工作有所帮助。

  00-1010前言1、用户代理2、发送请求3、解析数据4、建立ip代理池、检查ip是否可用5、总结完整代码

  

目录

  在使用爬虫时,很多网站都有一定的反爬措施,甚至在爬取大量数据或者多次频繁访问网站时,可能会面临ip封禁,所以这时候我们通常可以找一些代理ip继续爬虫测试。

  这一次,下面就开始来简单地介绍一下爬取免费的代理ip来搭建自己的代理ip池:抓取了免费ip代理:http://www.ip3366.net/free/.的网站

  提示:是本文的主要内容,以下案例可供参考。

  

前言

  在发送请求时,我们通常会进行简单的反爬行。这时可以用fake_useragent模块设置一个请求头,可以伪装成浏览器。可以使用以下两种方法。

  从fake_useragent导入用户代理

  标题={

  #“用户代理”3360UserAgent()。常见浏览器(如Firefox、Google)的随机# Request头伪装

  用户代理 : Useragent()。谷歌浏览器

  }

  

一、User-Agent

  response=requests . get(URL= http://www . IP 3366 . net/free/,headers=request_header())

  # text=response . text . encode( ISO-8859-1 )

  # print(text.decode(gbk ))

  

二、发送请求

  我们只需要解析ip和端口。

  使用xpath解析(我个人比较喜欢)(当然还有很多解析方法,比如正则化,css选择器,BeautifulSoup等等)。

  #使用xpath解析并提取数据ip和端口

  html=etree。HTML(响应.文本)

  tr _ list=html . XPath(/html/body/div[2]/div/div[2]/table/tbody/tr )

  对于tr_list:中的td

  ip_=td.xpath(。/td[1]/text())[0] #ip

  Port _=td.xpath(。/td [2]/text ()) [0] # port

  proxy=IP _ : port _ # 115 . 218 . 5 . 533600035365

  

三、解析数据

  #构建代理ip

  代理=ip : 端口

  代理={

  http: http://代理,

  https: http://代理,

  # http:代理,

  # https:代理,

  }

  尝试:

  response=requests . get(URL= 3359www.baidu.com/,headers=请求标题()、代理=代理、超时=1) #设置超时,使响应等待1秒

  response.close()

  if response . status _ code==200:

  打印(代理, \033[31m可用\

  033[0m)

   else:

   print(proxy, 不可用)

   except:

   print(proxy,请求异常)

  

  

五、完整代码

  

import requests #导入模块

  from lxml import etree

  from fake_useragent import UserAgent

  #简单的反爬,设置一个请求头来伪装成浏览器

  def request_header():

   headers = {

   # User-Agent: UserAgent().random #常见浏览器的请求头伪装(如:火狐,谷歌)

   User-Agent: UserAgent().Chrome #谷歌浏览器

   }

   return headers

  创建两个列表用来存放代理ip

  all_ip_list = [] #用于存放从网站上抓取到的ip

  usable_ip_list = [] #用于存放通过检测ip后是否可以使用

  #发送请求,获得响应

  def send_request():

   #爬取7页,可自行修改

   for i in range(1,8):

   print(f正在抓取第{i}页……)

   response = requests.get(url=fhttp://www.ip3366.net/free/?page={i}, headers=request_header())

   text = response.text.encode(ISO-8859-1)

   # print(text.decode(gbk))

   #使用xpath解析,提取出数据ip,端口

   html = etree.HTML(text)

   tr_list = html.xpath(/html/body/div[2]/div/div[2]/table/tbody/tr)

   for td in tr_list:

   ip_ = td.xpath(./td[1]/text())[0] #ip

   port_ = td.xpath(./td[2]/text())[0] #端口

   proxy = ip_ + : + port_ #115.218.5.5:9000

   all_ip_list.append(proxy)

   test_ip(proxy) #开始检测获取到的ip是否可以使用

   print(抓取完成!)

   print(f抓取到的ip个数为:{len(all_ip_list)})

   print(f可以使用的ip个数为:{len(usable_ip_list)})

   print(分别有:\n, usable_ip_list)

  #检测ip是否可以使用

  def test_ip(proxy):

   #构建代理ip

   proxies = {

   "http": "http://" + proxy,

   "https": "http://" + proxy,

   # "http": proxy,

   # "https": proxy,

   }

   try:

   response = requests.get(url=https://www.baidu.com/,headers=request_header(),proxies=proxies,timeout=1) #设置timeout,使响应等待1s

   response.close()

   if response.status_code == 200:

   usable_ip_list.append(proxy)

   print(proxy, \033[31m可用\033[0m)

   else:

   print(proxy, 不可用)

   except:

   print(proxy,请求异常)

  if __name__ == __main__:

   send_request()

  

  

总结

  到此这篇关于Python爬虫实现搭建代理ip池的文章就介绍到这了,更多相关Python代理ip池内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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