前言

有时候爬的次数太多时ip容易被禁,所以需要ip代理的帮助。
今天爬的思路是:到云代理获取大量ip代理,逐个检测,将超时不可用的代理排除,留下优质的ip代理。

一、爬虫分析

首先看看今天要爬取的网址

http://www.ip3366.net/free/

1.分析网址

首先判断网址是动态网址还是静态网址,静态网址就是直接能通过翻页从网址里找到页码,以下是每页的网址:

http://www.ip3366.net/free/?stype=1&page=2
http://www.ip3366.net/free/?stype=1&page=3
http://www.ip3366.net/free/?stype=1&page=4

所以推出是静态网址,每页page递增1的规律

2.分析数据

今天打算用xpath来解析数据,首先打开F12,可以看到每条代理的信息都包裹在tr中,因此我们可以先通过tr获取全部信息,再遍历tr里的ip,端口和类型

二、完整代码

附上完整代码和详细注释

import requests
from lxml import etree
# 5.检测ip质量
def check_ip(proxies_list):
headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1'}
can_use=[]
for ip in proxies_list:
try:
# 设置超时时间timeout,如果响应时间超出则不合格
response=requests.get(url=base_url,headers=headers,proxies=ip,timeout=0.1)
if response.status_code==200:
can_use.append(ip)
except Exception:
print('当前代理ip:',ip,'请求超时,检测不合格')
finally:
print('当前代理ip:',ip,'检测通过')
return can_use proxies_list=[]
# 爬3页
for page in range(1,4):
print('---------------正在爬取第{}页数据---------------'.format(page))
# 1.分析url,添加headers,伪装成浏览器
base_url='http://www.ip3366.net/free/?stype=1&page={}'.format(str(page))
headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1'}
# 2.发送请求
response=requests.get(url=base_url,headers=headers)
# 3.解析数据
response.encoding='gbk'
page_text=response.text
tree=etree.HTML(page_text)
# 获取所有ip代理的信息,就是所有tr
ip_list=tree.xpath('//*[@id="list"]/table/tbody/tr')
# 遍历ip代理
for tr in ip_list:
# xpath默认是列表类型,加个[0]就是文本类型了
http_type=tr.xpath('./td[4]/text()')[0]
ip=tr.xpath('./td[1]/text()')[0]
port=tr.xpath('./td[2]/text()')[0]
# 4.构建代理ip结构(格式像这样子{'HTTPS': '47.100.182.193:8081'})
proxies_dict={}
proxies_dict[http_type]=ip+":"+port
print('保存成功:',proxies_dict)
proxies_list.append(proxies_dict)
#放入空列表
print('获得代理ip数量:',len(proxies_list))
print('--------------------正在检测ip质量---------------')
can_use=check_ip(proxies_list)
print('质量高的:',can_use)
print('质量高的代理ip数量:',len(can_use))

运行效果如下:

总结

这个网站一次爬取次数多了,浏览器代理(headers)容易挂,换个浏览器代理即可。

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!

用Python批量爬取优质ip代理的更多相关文章

  1. 从0实现python批量爬取p站插画

    一.本文编写缘由 很久没有写过爬虫,已经忘得差不多了.以爬取p站图片为着手点,进行爬虫复习与实践. 欢迎学习Python的小伙伴可以加我扣群86七06七945,大家一起学习讨论 二.获取网页源码 爬取 ...

  2. python 批量爬取代理ip

    import urllib.request import re import time import random def getResponse(url): req = urllib.request ...

  3. python scrapy 爬取西刺代理ip(一基础篇)(ubuntu环境下) -赖大大

    第一步:环境搭建 1.python2 或 python3 2.用pip安装下载scrapy框架 具体就自行百度了,主要内容不是在这. 第二步:创建scrapy(简单介绍) 1.Creating a p ...

  4. python+scrapy 爬取西刺代理ip(一)

    转自:https://www.cnblogs.com/lyc642983907/p/10739577.html 第一步:环境搭建 1.python2 或 python3 2.用pip安装下载scrap ...

  5. python 批量爬取四级成绩单

    使用本文爬取成绩大致有几个步骤:1.提取表格(或其他格式文件——含有姓名,身份证等信息)中的数据,为进行准考证爬取做准备.2.下载准考证文件并提取出准考证和姓名信息.3.根据得到信息进行数据分析和存储 ...

  6. python批量爬取动漫免费看!!

    实现效果 运行环境 IDE VS2019 Python3.7 Chrome.ChromeDriver Chrome和ChromeDriver的版本需要相互对应 先上代码,代码非常简短,包含空行也才50 ...

  7. Python批量爬取谷歌原图,2021年最新可用版

    文章目录 前言 一.环境配置 1.安装selenium 2.使用正确的谷歌浏览器驱动 二.使用步骤 1.加载chromedriver.exe 2.设置是否开启可视化界面 3.输入关键词.下载图片数.图 ...

  8. python批量爬取文档

    最近项目需要将批量链接中的pdf文档爬下来处理,根据以下步骤完成了任务: 将批量下载链接copy到text中,每行1个链接: 再读txt文档构造url_list列表,利用readlines返回以行为单 ...

  9. python批量爬取猫咪图片

    不多说直接上代码 首先需要安装需要的库,安装命令如下 pip install BeautifulSoup pip install requests pip install urllib pip ins ...

随机推荐

  1. jmeter多用户登录并发测试

    在使用Jmeter进行性能测试时,我们通常会需要配置多个不同用户进行并发测试,这里简单介绍一下配置方法. 1.运行Jmeter.bat,  在打开的测试计划中右键添加一个线程组: 2.在线程组下添加录 ...

  2. uniapp分包(详尽版)

    PS:本文是笔者对基于uniapp的一小程序项目进行分包后的复盘文档,不足之处请多多指教. 一:分包相关概念 本质上是改变项目的路由以及优化项目各个模块的启动时间的一种优化技术. 主包与分包的概念 1 ...

  3. CentOS硬软链接

    硬软链接说明 软链接: 1.软链接,以路径的形式存在.类似于Windows操作系统中的快捷方式 2.软链接可以 跨文件系统 ,硬链接不可以 3.软链接可以对一个不存在的文件名进行链接 4.软链接可以对 ...

  4. 「刷题笔记」哈希,kmp,trie

    Bovine Genomics 暴力 str hash+dp 设\(dp[i][j]\)为前\(i\)组匹配到第\(j\)位的方案数,则转移方程 \[dp[i][j+l]+=dp[i-1][j] \] ...

  5. 20200311_最新爬取mzitu

    废话不多, 直接上代码, python3.6: import requests from bs4 import BeautifulSoup import os import time; import ...

  6. MySQL错误日志(Error Log)

    错误日志是一个文本文件,记录了 MySQL Server 每次启动和关闭的详细信息以及运行过程中所有较为严重的警告和错误信息.在遇到问题时,应该首先查看这个文件. 如何开启 使用命令 SHOW VAR ...

  7. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    注:网上搜来的快照,暂未验证 在java代码中请求https链接的时候,可能会报下面这个错误javax.net.ssl.SSLHandshakeException: sun.security.vali ...

  8. 无所不能的Embedding5 - skip-thought的兄弟们[Trim/CNN-LSTM/quick-thought]

    这一章我们来聊聊skip-thought的三兄弟,它们在解决skip-thought遗留问题上做出了不同的尝试[Ref1-4], 以下paper可能没有给出最优的解决方案(对不同的NLP任务其实没有最 ...

  9. 第7.28节 《Python类、类型、协议》章节总结

    本章详细介绍了Python协议.多态与"鸭子类型".类.类实例变量.类变量.实例方法.类方法.静态方法.类继承.抽象类.property函数和@property装饰器定义属性访问方 ...

  10. PyQt(Python+Qt)学习随笔:Qt Designer中的menu菜单及menu bar菜单栏

    菜单由menu bar菜单栏和menu菜单两部分构成,分别对应类QMenuBar和QMenu. menuBar是包含一系列下拉菜单项组成,menu包含两种,一种是直接对应Action的,一种是父菜单, ...