用Python批量爬取优质ip代理

前言

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

1、爬虫分析

首先看看今天要爬取的网址浏览器

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

 

1.分析网址

首先判断网址是动态网址仍是静态网址,静态网址就是直接能经过翻页从网址里找到页码,如下是每页的网址:bash

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,端口和类型
在这里插入图片描述app

2、完整代码

附上完整代码和详细注释学习

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)容易挂,换个浏览器代理便可。ui


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

想要获取更多Python学习资料能够加
QQ:2955637827私聊
或加Q群630390733
你们一块儿来学习讨论吧!
spa

相关文章
相关标签/搜索