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代理相关推荐

  1. 手把手教你使用Python爬取西刺代理数据,不用担心我封IP了!

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  2. python爬取高匿代理IP(再也不用担心会进小黑屋了)

    一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...

  3. Python爬取西刺代理网页

    爬取西刺代理网页的信息,并保存到本地的TXT文本或者mysql数据库中 本文只做爬取网页的练习 代码如下: import requests from lxml import etree import ...

  4. Python爬虫-爬取常用IP代理

    引入包 import requests from bs4 import BeautifulSoup import re 爬取proxy360 def IPspider1():response = re ...

  5. 网贷之家 python 爬取公开的平台数据

    初学python爬虫,仅用学到的几个库尝试爬取网贷之家的平台信息数据,并保存到excel中. 爬取的过程中遇到了各种各样的问题,通过各种查资料最终解决,但是感觉自己的代码不够简洁,可能是学的东西还是太 ...

  6. python之利用requests库爬取西刺代理,并检验IP的活性

    用爬虫爬取某个网站的数据时,如果用一个IP频繁的向该网站请求大量数据,那么你的ip就可能会被该网站拉入黑名单,导致你不能访问该网站,这个时候就需要用到IP动态代理,即让爬虫爬取一定数据后更换IP来继续 ...

  7. python爬取代理IP并进行有效的IP测试

    爬取代理IP及测试是否可用 很多人在爬虫时为了防止被封IP,所以就会去各大网站上查找免费的代理IP,由于不是每个IP地址都是有效的,如果要进去一个一个比对的话效率太低了,我也遇到了这种情况,所以就直接 ...

  8. Python 爬取西刺可用代理IP,自带检测。

    功能: 爬取西刺代理IP 添加了自动检测IP是否可用功能 输出到Data.txt文件中 注意: 爬取西刺的时候,有可能真实IP被封,可以先尝试爬取少量的代理IP,放入ip_use中. 测试: 1.测试 ...

  9. Python爬取西刺国内高匿代理ip并验证

    1.抓取ip存入文件 首先,我们访问西刺首页 http://www.xicidaili.com/,并点击国内高匿代理,如下图: 按 F12 检查网页元素或者 ctrl+u查看网页源代码: 我们需要提取 ...

最新文章

  1. kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition
  2. 文件分享平台php源码,简易社会化用户文件分享系统 v1.0
  3. infinity mysql_MySql锁机制
  4. vue清除绑定的class_vue 的 class 和 style 绑定的方法【05】
  5. 强化学习2——有模型强化学习MDP(搬砖马尔科夫,贝尔曼等式)
  6. 开发文件服务器,易语言开发文件服务器
  7. Node简单服务器开发
  8. 基于vue的无缝滚动组件
  9. 用Emacs编写mybatis
  10. 分布式开放 消息系统 (RocketMQ) 的原理与实践
  11. web.xml 配置
  12. CUDA Study Notes
  13. linux dhcp的详细配置
  14. 使用Emit动态调用方法(技术原型)
  15. 181025词霸有道扇贝每日一句
  16. python基础编程小实例11——房贷计算器
  17. Floorplan的SSN(Simultaneous Switching Noise)问题
  18. ionic ion-refresher刷新完毕
  19. jsp左侧菜单栏_HTML页面左侧菜单栏切换实现右侧主体内容改变
  20. 带你走进3D建模!一份建模零基础小白的入门宝典,建议收藏细读

热门文章

  1. mpf的matlab,mpf与mf算法matlab实现.doc
  2. 计算机网络形考作业三,电大-计算机网络形考作业3
  3. Linux常用命令——lsusb命令
  4. cadence capture CIS 之添加数据库
  5. PEGASIS: Power-Efficient Gathering in Sensor Information Systems
  6. 数据仓库 — 05_日志生成(日志生成jar包的部署、脚本的编写_启动_时间同步_进程查看)
  7. python实时采集与处理声音信号_python之音频信号处理一
  8. python操作数据库游标_Python 数据库游标对象
  9. CG100 保时捷锂电池通病维修 此电池装载在保时捷车上,由于长时间停放,导致电池电压过低,电池处于保护模式,内部程序锁死,无法充电,车辆也无法启动。
  10. 咔咔截屏录屏大师如何录制手机视频