python 爬取公开IP代理
import queue
import time
from threading import Thread
from lxml import etree
import re
import requests
# 控制台不输出verify=False导致的安全警告
requests.packages.urllib3.disable_warnings()def req_get_html(url, headers=None, retry_times=3):"""发送请求获取网页源代码:param url: 链接地址:param retry_times:重试次数:return: 响应对象"""flag = Falseres = ""while not flag and retry_times > 0:try:res = requests.get(url, headers=headers, verify=False)encode = get_encode(res.headers)if encode != "":res.encoding = encodeelse:passflag = Trueexcept Exception as e:print(e)retry_times -= 1return resdef get_encode(headers):"""获取headers中的Content-Type里携带的网页编码信息:param headers::return:"""encode = ""encod_str = headers["Content-Type"]if encod_str is not None:com_encode = re.compile("charset=(.*)")encode = re.search(com_encode, encod_str)else:passreturn encodedef analyze_response(res):"""解析网页结构,提取代理信息:param res::return:"""ip_msg_lis = []tree = etree.HTML(res)lis = tree.xpath("//div[@id='list']//tr|//div[@class='fly-panel']//tr|//div[@class='layui-form']//tr|//div[@align='center']//tr|//div[@class='top']//tr|//div[@class='container']//tr|//div[@class='list']/div[@class='tr ip_tr']")for i in lis:li = i.xpath('./td/text()|./div/text()')print(li)if len(li) > 0:if li[0] != "ip":ip_msg_lis.append(li)return ip_msg_lisdef rm_character(str_wait):"""剔除获取的代理中的特殊符号:param str_wait::return:"""re_rm = re.compile("\\n|\\t")res = re.sub(re_rm, "", str_wait)return resdef try_response_speed(ip, port, retry_time=3, timeout=3):"""测速:param ip::param port::param retry_time::return:"""flag = Falsetry_url = "http://www.baidu.com"response_status = 500speed = retry_time * timeoutwhile not flag and retry_time > 0:try:proxy = {"http": "http://{}:{}".format(ip, port),"https": "https://{}:{}".format(ip, port)}# print(proxy)time_start = time.time()response = requests.get(url=try_url, proxies=proxy, timeout=timeout)time_end = time.time()speed = time_end - time_startresponse_status = response.status_code# print(response_status)flag = Trueexcept Exception as e:# print(e)retry_time -= 1ip_msg = {"ip": ip,"port": port,"status": response_status,"speed": speed}if response_status == 200:que.put(ip_msg)# return response_status,speedif __name__ == '__main__':que = queue.Queue()ip_free_dic = {"快代理_高匿": "https://free.kuaidaili.com/free/inha","快代理_普通": "https://free.kuaidaili.com/free/intr","89免费代理": "https://www.89ip.cn/index_1.html","高可用全球免费代理ip库": "https://ip.jiangxianli.com/","66代理": "http://www.66ip.cn/2.html","站大爷": "https://www.zdaye.com/daxue_ip.html","蜜蜂代理":"https://www.beesproxy.com/free"}for k, v in ip_free_dic.items():res = req_get_html(url=v)if res != "":ip_list = analyze_response(res.text)if len(ip_list) > 0:res = [[rm_character(j) for j in i] for i in ip_list]for msg in res:ip = msg[0]port = msg[1]test_speed = Thread(target=try_response_speed, args=(ip, port))test_speed.start()while not que.empty():print(que.get())
python 爬取公开IP代理相关推荐
- 手把手教你使用Python爬取西刺代理数据,不用担心我封IP了!
/1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...
- python爬取高匿代理IP(再也不用担心会进小黑屋了)
一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...
- Python爬取西刺代理网页
爬取西刺代理网页的信息,并保存到本地的TXT文本或者mysql数据库中 本文只做爬取网页的练习 代码如下: import requests from lxml import etree import ...
- Python爬虫-爬取常用IP代理
引入包 import requests from bs4 import BeautifulSoup import re 爬取proxy360 def IPspider1():response = re ...
- 网贷之家 python 爬取公开的平台数据
初学python爬虫,仅用学到的几个库尝试爬取网贷之家的平台信息数据,并保存到excel中. 爬取的过程中遇到了各种各样的问题,通过各种查资料最终解决,但是感觉自己的代码不够简洁,可能是学的东西还是太 ...
- python之利用requests库爬取西刺代理,并检验IP的活性
用爬虫爬取某个网站的数据时,如果用一个IP频繁的向该网站请求大量数据,那么你的ip就可能会被该网站拉入黑名单,导致你不能访问该网站,这个时候就需要用到IP动态代理,即让爬虫爬取一定数据后更换IP来继续 ...
- python爬取代理IP并进行有效的IP测试
爬取代理IP及测试是否可用 很多人在爬虫时为了防止被封IP,所以就会去各大网站上查找免费的代理IP,由于不是每个IP地址都是有效的,如果要进去一个一个比对的话效率太低了,我也遇到了这种情况,所以就直接 ...
- Python 爬取西刺可用代理IP,自带检测。
功能: 爬取西刺代理IP 添加了自动检测IP是否可用功能 输出到Data.txt文件中 注意: 爬取西刺的时候,有可能真实IP被封,可以先尝试爬取少量的代理IP,放入ip_use中. 测试: 1.测试 ...
- Python爬取西刺国内高匿代理ip并验证
1.抓取ip存入文件 首先,我们访问西刺首页 http://www.xicidaili.com/,并点击国内高匿代理,如下图: 按 F12 检查网页元素或者 ctrl+u查看网页源代码: 我们需要提取 ...
最新文章
- kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition
- 文件分享平台php源码,简易社会化用户文件分享系统 v1.0
- infinity mysql_MySql锁机制
- vue清除绑定的class_vue 的 class 和 style 绑定的方法【05】
- 强化学习2——有模型强化学习MDP(搬砖马尔科夫,贝尔曼等式)
- 开发文件服务器,易语言开发文件服务器
- Node简单服务器开发
- 基于vue的无缝滚动组件
- 用Emacs编写mybatis
- 分布式开放 消息系统 (RocketMQ) 的原理与实践
- web.xml 配置
- CUDA Study Notes
- linux dhcp的详细配置
- 使用Emit动态调用方法(技术原型)
- 181025词霸有道扇贝每日一句
- python基础编程小实例11——房贷计算器
- Floorplan的SSN(Simultaneous Switching Noise)问题
- ionic ion-refresher刷新完毕
- jsp左侧菜单栏_HTML页面左侧菜单栏切换实现右侧主体内容改变
- 带你走进3D建模!一份建模零基础小白的入门宝典,建议收藏细读
热门文章
- mpf的matlab,mpf与mf算法matlab实现.doc
- 计算机网络形考作业三,电大-计算机网络形考作业3
- Linux常用命令——lsusb命令
- cadence capture CIS 之添加数据库
- PEGASIS: Power-Efficient Gathering in Sensor Information Systems
- 数据仓库 — 05_日志生成(日志生成jar包的部署、脚本的编写_启动_时间同步_进程查看)
- python实时采集与处理声音信号_python之音频信号处理一
- python操作数据库游标_Python 数据库游标对象
- CG100 保时捷锂电池通病维修 此电池装载在保时捷车上,由于长时间停放,导致电池电压过低,电池处于保护模式,内部程序锁死,无法充电,车辆也无法启动。
- 咔咔截屏录屏大师如何录制手机视频