python网络爬虫实战——实时抓取西刺免费代理ip

article/2025/3/19 4:48:02

参考网上高手示例程序,利用了多线程技术,Python版本为2.7

#-*-coding:utf8-*-import urllib2
import re
import threading
import timerawProxyList = []
checkedProxyList = []#抓取代理网站
targets=[]
for i in range(1,6):target = r"http://www.xici.net.co/nn/%d" % itargets.append(target)
# print targets#正则
p = re.compile(r'''<tr class=".+?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</td>.+?(\d{2,4})</td>.+?<td>(.{4,5})</td>''',re.DOTALL)#获取代理的类
class ProxyGet(threading.Thread):def __init__(self,target):threading.Thread.__init__(self)self.target = targetdef getProxy(self):print "目标网站:"+self.targetreq = urllib2.urlopen(self.target)result = req.read()matchs = p.findall(result)for row in matchs:ip = row[0]port = row[1]agent = row[2]addr=agent+'://'+ip+':'+portproxy = [ip,port,addr]rawProxyList.append(proxy)def run(self):self.getProxy()#检验代理类
class ProxyCheck(threading.Thread):def __init__(self,proxyList):threading.Thread.__init__(self)self.proxyList = proxyListself.timeout=5self.testUrl = "http://www.baidu.com/"self.testStr = "030173"def checkProxy(self):cookies = urllib2.HTTPCookieProcessor()for proxy in self.proxyList:proxyHandler = urllib2.ProxyHandler({"http" : r'http://%s:%s' %(proxy[0],proxy[1])})opener=urllib2.build_opener(cookies,proxyHandler)opener.addheaders =[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')]t1 = time.time()try:req = opener.open(self.testUrl,timeout=self.timeout)result=req.read()timeused = time.time()-t1pos = result.find(self.testStr)if pos > 1:checkedProxyList.append((proxy[0],proxy[1],proxy[2],timeused))else:continueexcept Exception,e:continuedef run(self):self.checkProxy()if __name__ == "__main__":getThreads=[]checkThreads=[]#对每个目标网站开启一个线程负责抓取代理
for i in range(len(targets)):t = ProxyGet(targets[i])getThreads.append(t)for i in range(len(getThreads)):getThreads[i].start()for i in range(len(getThreads)):getThreads[i].join()print '.'*10+"总共抓取了%s个代理" %len(rawProxyList) +'.'*10#开启20个线程负责校验,将抓取到的代理分成20份,每个线程校验一份
for i in range(20):t = ProxyCheck(rawProxyList[((len(rawProxyList)+19)/20) * i:((len(rawProxyList)+19)/20) * (i+1)])checkThreads.append(t)for i in range(len(checkThreads)):checkThreads[i].start()for i in range(len(checkThreads)):checkThreads[i].join()print '.'*10+"总共有%s个代理通过校验" %len(checkedProxyList) +'.'*10#持久化
f= open("proxy_list.txt",'w+')
for proxy in sorted(checkedProxyList,cmp=lambda x,y:cmp(x[3],y[3])):print "checked proxy is: %s:%s\t%s\t%s" %(proxy[0],proxy[1],proxy[2],proxy[3])f.write("%s:%s\t%s\t%s\n"%(proxy[0],proxy[1],proxy[2],proxy[3]))
f.close()



http://chatgpt.dhexx.cn/article/h1o1LqZ1.shtml

相关文章

十五个免费Windows桌面系统工具(附下载)

工欲善其事&#xff0c;必先利其器。有些人喜欢以量取胜&#xff0c;通过收集海量Windows工具帮助自己完成日常业务。不过对于大多数人来说&#xff0c;“实用”二字最为关键。如果收集来的软件一周用不上几次&#xff0c;无疑我们很难将其视为“实用”工具中的佼佼者。 实用工…

Linux工具参考篇(网摘)

Linux工具参考篇 原文出处&#xff1a;【Linux Tools Quick Tutorial】 1. gdb 调试利器2. ldd 查看程序依赖库3. lsof 一切皆文件4. ps 进程查看器5. pstack 跟踪进程栈6. strace 跟踪进程中的系统调用7. ipcs 查询进程间通信状态8. top linux下的任务管理器9. free 查询可用内…

ADB的使用-简单命令

今天记录的是 Android Debug Bridge&#xff0c;安卓debug调试桥&#xff0c;它是一款测试/开发人员必不可少的利器。作为一名测试人员&#xff0c;今天主要了解它在测试中简单的应用命令。 ADB是一个C/S架构&#xff08;默认端口号为&#xff1a;5037&#xff09;&#xff0c;…

成为一名二进制分析师需要用到的Linux二进制分析工具有哪些?

在本文中&#xff0c;你将学习在Linux操作系统上进行分析所需的基本工具。 除了向你简单展示工具列表&#xff0c;并解释它们的功能以外&#xff0c;我还将使用“夺旗”&#xff08;Capture The Flag&#xff0c;CTF&#xff09;挑战来说明它们的工作原理。在计算机安全与黑客…

java面试大全(7w字,更新中)

1.杂题 1.maven依赖冲突的解决方法 依赖冲突的原因 举个例子&#xff0c;A依赖于B与C&#xff0c;B依赖于D的1.0版本&#xff0c;C依赖于D的2.0版本&#xff0c;这就导致加载的时候到底会引入那个版本的jar包的问题 解决方法: 1.用idea提供的MavenHelper查看是哪个依赖冲突…

Redis入门学习笔记--附Redis工具类

阅读全文大概得花3个小时时间 Redis入门 概述 Redis是什么 Redis&#xff1a;REmote DIctionary Server 是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵循BSD协议&#xff0c;是一个高性能的&#xff08;Key/Value&#xff09;分布式内存数据库&#xff0c;基于内…

mysql性能分析工具_MySQL性能分析、及调优工具使用详解

本文汇总了MySQL DBA日常工作中用到的些工具&#xff0c;方便初学者&#xff0c;也便于自己查阅。 先介绍下基础设施(CPU、IO、网络等)检查的工具&#xff1a; vmstat、sar(sysstat工具包)、mpstat、oprofile、nicstat、dstat、iotop、tsar、iostat 掌握几个即可&#xff0c;功…

3种方法删除7-Zip压缩包的密码

7-Zip压缩软件是一款完全免费且开源的软件&#xff0c;不仅能压缩和解压7-Zip压缩包&#xff0c;还能给压缩包设置打开密码。 有些小伙伴可能会遇到这样的问题&#xff0c;7-Zip压缩包设置密码后&#xff0c;过了一段时间不需要密码保护了&#xff0c;或者一不小心忘记了密码&…

人大金仓数据库软件下载

作为国产数据库的头部企业&#xff0c;人大金仓的数据库基于开源数据库PostgreSQL开发而成&#xff0c;具有较好的性能及使用体验。这里先来一段人大金仓对自己产品的描述&#xff1a; 人大金仓致力于打造最便捷的国产化替代方案&#xff0c;最可靠、最智能的数据库产品服务&am…

金仓数据库KingbaseES客户端连接问题

关键字&#xff1a; KingbaseES&#xff0c;客户端连接 尽管可能在客户端出现的错误情况范围宽广而且是应用相关的&#xff0c;但的确有几种与服务器的启动方式直接相关。除了下面提到的几种错误之外的问题都应该在相应的客户端应用文档中。 这是常见的"I couldnt find…

金仓数据库KingbaseES的连接方法

关键字&#xff1a; KingbaseES&#xff0c;数据库连接 内容正文&#xff1a; 在访问数据库前&#xff0c;启动数据库服务器后&#xff0c;要先连接我们需要访问的数据库&#xff0c;才能对数据库进行操作&#xff0c;下面我们将对KingBaseES数据库的连接方法进行总结&#…

KingBase数据库【人大金仓数据库】jdbc链接

jdbc链接 首先明确自己的金仓数据库的版本明确自己的驱动demo代码 首先明确自己的金仓数据库的版本 我是2022年2月14号&#xff0c;从官网下载的&#xff1a;8.6的版本。 你们一定要看好自己的版本&#xff0c;因为jdbc的jar是要对应版本的&#xff0c;我当时没注意&#xff0…

人大金仓数据库怎么样?好用吗?

人大金仓总体来看属于数据库第一梯队。 有保障&#xff1a;国产数据库老牌玩家&#xff0c;是最早在国内开展数据库教学、研究与开发的专家在1999年创立的&#xff0c;现在属于央企&#xff0c;KingbaseES是入选国家自主创新产品目录的唯一数据库产品。 口碑和市场&#xff1a;…

DataGrip连接人大金仓数据库(kingbase)详细教程【超详细】

DataGrip连接人大金仓数据库&#xff08;kingbase&#xff09;详细教程【超详细】 第一步&#xff1a;下载DataGrip第二步&#xff1a;添加人大金仓的数据库引擎第三步&#xff1a;输入账号密码连接第四步&#xff1a;查看数据库关于连接其它数据库 第一步&#xff1a;下载Data…

人大金仓数据库迁移工具

人大金仓数据库迁移工具 人大金仓帮助文档: 链接&#xff1a;https://pan.baidu.com/s/1mbp9m5zaxatsq2fhianAYg 提取码&#xff1a;9s13 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦–来自百度网盘超级会员V3的分享 上一篇已经写完如何安装人大金仓数据库&a…

​ 金仓数据库KingbaseES数据库如何启停和重启

关键字 数据库、启动数据库、停止数据库、重启数据库 KingbaseES数据库服务启动 在访问数据库之前&#xff0c;必须启动数据库服务器。可通过命令&#xff1a; ps -ef|grep kingbase 查看数据库服务器当前是否处于启动状态。如下图所示&#xff0c;kingbase进程存在且为正常开启…

国产化人大金仓数据库转库工具:oracle12c数据库转kingbase8.6人大金仓数据库实例演示

oracle12c数据库转人大金仓数据库实例演示 第一章&#xff1a;数据准备① 人大金仓建库建用户② 人大金仓授权表空间③ 人大金仓创建 schema 表第二章&#xff1a;转库演示① 转库工具准备② 创建源库和目的库数据库连接③ 创建迁移任务④ 启动迁移任务⑤ 迁移完成&#xff0c;…

金仓数据库安装教程

安装教程 前期工作环境要求硬件要求 预安装步骤安装包准备预安装准备创建安装用户安装目录数据目录 安装步骤启动安装程序 前期工作 环境要求 安装金仓数据库管理系统 KingbaseES V8R6 &#xff0c;需要 Linux 系统满足以下环境参数&#xff0c;否则安装可能会出现错误。 硬…

人大金仓数据库(kingbase7d)操作入门指南

一直以来&#xff0c;通过在CSDN上搜索、学习相关技术知识&#xff0c;解决了诸多工作中遇到的问题。自己却从未发表贡献过一篇文章&#xff0c;深感内疚。近期&#xff0c;公司由于与金仓公司合作&#xff0c;需要将数据迁移至人大金仓数据库&#xff0c;本人有幸参与此工作&a…

人大金仓数据库的备份与还原 KingbaseES V8R6

人大金仓数据库的备份与还原 文章目录 人大金仓数据库的备份与还原前言备份sys_dump 命令 还原ksql 命令sys_restore 一. 从人大金仓数据库备份还原到人大金仓数据库二 从postgresql数据库备份还原到人大金仓数据库 后记 前言 本文记录一次使用人大金仓数据库&#xff08;King…