文章目录

  • 前言
  • 一、User-Agent
  • 二、发送请求
  • 三、解析数据
  • 四、构建ip代理池,检测ip是否可用
  • 五、完整代码
  • 总结

前言

在使用爬虫的时候,很多网站都有一定的反爬措施,甚至在爬取大量的数据或者频繁地访问该网站多次时还可能面临ip被禁,所以这个时候我们通常就可以找一些代理ip来继续爬虫测试。下面就开始来简单地介绍一下爬取免费的代理ip来搭建自己的代理ip池:
本次爬取免费ip代理的网址:http://www.ip3366.net/free/


提示:以下是本篇文章正文内容,下面案例可供参考

一、User-Agent

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

from fake_useragent import UserAgent
headers = {# 'User-Agent': UserAgent().random #常见浏览器的请求头伪装(如:火狐,谷歌)'User-Agent': UserAgent().Chrome #谷歌浏览器}


二、发送请求

response = requests.get(url='http://www.ip3366.net/free/', headers=request_header())# text = response.text.encode('ISO-8859-1')# print(text.decode('gbk'))

三、解析数据

我们只需要解析出ip、port即可。


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

     #使用xpath解析,提取出数据ip,端口html = etree.HTML(response.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] #ipport_ = td.xpath('./td[2]/text()')[0]  #端口proxy = ip_ + ':' + port_   #115.218.5.5:9000

四、构建ip代理池,检测ip是否可用

 #构建代理ipproxy = ip + ':' + portproxies = {"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,使响应等待1sresponse.close()if response.status_code == 200:print(proxy, '\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=f'http://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] #ipport_ = td.xpath('./td[2]/text()')[0]  #端口proxy = ip_ + ':' + port_   #115.218.5.5:9000all_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):#构建代理ipproxies = {"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,使响应等待1sresponse.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池相关推荐

  1. 利用多线程爬虫搭建代理ip池的两种方法(含源码)

    搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...

  2. Python搭建代理IP池(一)- 获取 IP

    使用爬虫时,大部分网站都有一定的反爬措施,有些网站会限制每个 IP 的访问速度或访问次数,超出了它的限制你的 IP 就会被封掉.对于访问速度的处理比较简单,只要间隔一段时间爬取一次就行了,避免频繁访问 ...

  3. python爬虫设置代理ip池

    在使用python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,那如何解决呢?使用代 ...

  4. Python爬虫添加代理IP池(新手)

    给爬虫添加代理IP池 我们在运行爬虫的过程中由于请求次数过多经常会遇到被封IP的情况,这时就需要用到代理IP来解决.代理IP的原理,简单来说就像在本机和web服务器之间开一个中转站,把本机的请求交给代 ...

  5. Python搭建代理IP池(三)- 检测 IP

    在获取 IP 时,已经成功将各个网站的代理 IP 获取下来了,然后就需要一个检测模块来对所有的代理进行一轮轮的检测,检测可用就设置为满分,不可用分数就减 1,这样就可以实时改变每个代理的可用情况,在获 ...

  6. python爬虫设置代理ip池——方法(一)

    """ 在使用python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网 ...

  7. Python搭建代理IP池(二)- 存储 IP

    上一文写了如何从代理服务网站提取 IP,本文就讲解如何存储 IP,毕竟代理池还是要有一定量的 IP 数量才行.存储的方式有很多,直接一点的可以放在一个文本文件中,但操作起来不太灵活,而我选择的是 My ...

  8. 搭建代理IP池的方法

    突破次数的限制就可以使爬虫更高效的工作,代理IP是突破次数限制,提高爬虫高效工作的最好的工具.所以,很多人都想通过建立IP池的方法,实现换IP突破限制,那么这IP池如何进行搭建呢? 一,免费搭建代理I ...

  9. 使用爬虫实现代理IP池之放弃篇

    2019独角兽企业重金招聘Python工程师标准>>> 啥叫代理IP以及代理IP池 概念上的东西网上搜索一下就好了,这里简单科普一下(大部分会读这篇文章的人,基本是不需要我来科普的) ...

最新文章

  1. 产生指定长度的随机字符串
  2. re.findall为什么返回的元素会是个元素为元组的列表类型呢
  3. 认识 MySQL 和 Redis 的数据一致性问题
  4. hue迁移数据库到mysql
  5. 09-Windows Server 2012 R2 会话远程桌面-标准部署-使用PowerShell进行部署2-2
  6. HTML中淡入的动画效果,CSS3实现页面淡入动画特效代码
  7. db2dual_db2 oracle 创建 序列 | 学步园
  8. Android开发指南(39) —— Testing Fundamentals
  9. gimp 抠图_gimp软件如何实现抠图?
  10. 亿图图示输入文字后画面自动缩小
  11. 联想Lenovo手机平板安装谷歌服务框架Google, Play商店,安装套件GMS
  12. 抖音小店怎么去添加淘宝链接?哪种推广适合淘客丨国仁网络资讯
  13. win7与xp 字体命名问题影响打印
  14. 推荐一款笔记软件 Notion
  15. play.html文件,playframework – 如何使用play框架渲染一个简单的html页面?
  16. Everything研究之快速获取USN记录的文件路径
  17. EMS是中国邮政提供的一种快递服务。
  18. 解决fatal error C1859: “Debug\thread5.pch”意外的预编译头错误的方法
  19. Centos7 docker完美卸载
  20. 如何使用Python爬取基金数据,并可视化显示

热门文章

  1. 获取商品ID下所有的sku精准库存api
  2. 谷歌浏览器下载的内容老是自动打开
  3. 婚姻对女人很重要,但远远不是我们的全部
  4. 谷歌浏览器取消idm在微信读书PC页面自动下载pdf
  5. Unity接入ChatGPT基于Python.Runtime的实现
  6. 2-n的素数详细解释
  7. 使用计算机对炼钢过程进行,转炉炼钢计算机数采监控技术及应用
  8. Keil MDK 安装pack包
  9. 服务器无备份位置可用,云服务器备份区域和可用区
  10. 基金投资入门3:中外常见金融指数类型说明