Python实例 -- 爬虫

 1 #coding="utf-8"
 2
 3 import urllib2
 4 import re
 5 import threading
 6 import time
 7
 8 """
 9 抓取代理发布页的ip和port10 http://www.xici.net.co/nn/%d
11 """
12
13 proxylist = []
14
15
16 def get_proxy_from_cnproxy():
17     global proxylist
18
19     p = re.compile(r‘<td><img alt="(.+?)" src=".+?" /></td>[\s\S]*?<td>(.+?)</td>[\s\S]*?<td>(.+?)</td>[\s\S]*?<td>[\s\S]*?<a href=".+?">.+?</a>[\s\S]*?</td>[\s\S]*?<td>.+?</td>[\s\S]*?<td>(.+?)</td>‘)
20
21     for i in range(1,2):
22         target = r"http://www.xici.net.co/nn/%d" %i
23         print target
24         req = urllib2.urlopen(target)
25         result = req.read()
26         matchs = p.findall(result)
27         for record in matchs:
28             addr = record[0]
29             ip = record[1]
30             port = record[2]
31             protocol = record[3]
32             l = [ip, port, protocol, addr]
33             #print l
34             proxylist.append(l)
35         print proxylist
36
37
38 class ProxyCheck(threading.Thread):
39     def __init__(self, proxylist, fname):
40         threading.Thread.__init__(self)
41         self.proxylist = proxylist
42         self.timeout = 5
43         self.test_url = "http://www.baidu.com/"
44         self.test_str = "030173"
45         self.checkedPProxyList = []
46         self.fname = fname
47
48     def checkProxy(self):
49         cookies = urllib2.HTTPCookieProcessor()
50         for proxy in self.proxylist:
51             proxy_handler = urllib2.ProxyHandler({"http":r‘http://%s:%s‘%(proxy[0],proxy[1])})
52             opener = urllib2.build_opener(cookies, proxy_handler)
53             opener.addheaders = [(‘user-agent‘, ‘mozilla/5.0(iphone; u; cpu like mac os x; en) applewebkit/420+ (khtml, like gecko) version/3.0 mobile/1A537a safari/419.3‘)]
54             urllib2.install_opener(opener)
55             t1 = time.time()
56             try:
57                 req = urllib2.urlopen(self.test_url, timeout = self.timeout)
58                 result = req.read()
59                 timeused = time.time() - t1
60                 pos = result.find(self.test_str)
61                 if pos > 1:
62                     self.checkedPProxyList.append([proxy[0],proxy[1],proxy[2],proxy[3],timeused])
63                 else:
64                     continue;
65             except Exception,e:
66                 print e.message
67                 continue;
68
69     def sort(self):
70         sorted(self.checkedPProxyList,cmp=lambda x,y:cmp(x[4],y[4]))
71
72     def save(self):
73         f = open(self.fname, ‘w+‘)
74         for proxy in self.checkedPProxyList:
75             f.write("%s:%s\t%s\t%s\t%s\n"%(proxy[0],proxy[1],proxy[2],proxy[3],str(proxy[4])))
76         f.close()
77
78     def run(self):
79         self.checkProxy()
80         self.sort()
81         self.save()
82
83
84 if __name__ == "__main__":
85     get_proxy_from_cnproxy()
86     t1 = ProxyCheck(proxylist,"test.txt")
87     t1.start()

Python实例 -- 爬虫,布布扣,bubuko.com

时间: 2025-01-03 21:09:12

Python实例 -- 爬虫的相关文章

[Python]网络爬虫(四):Opener与Handler的介绍和实例应用(转)

在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info and geturl urlopen返回的应答对象response(或者HTTPError实例)有两个很有用的方法info()和geturl() 1.geturl(): 这个返回获取的真实的URL,这个很有用,因为urlopen(或者opener对象使用的)或许会有重定向.获取的URL或许跟请求URL不同. 以人人中的一个超级链接为例, 我们建一个urllib2_test10.py来比较一下原始URL和重定向的链接: [p

Python网络爬虫

http://blog.csdn.net/pi9nc/article/details/9734437 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止. 如果把整个互联网当成一个网站,那么

python网络爬虫之cookie的使用方法汇总

在编写python网络爬虫时,除了要考虑到爬虫的异常处理问题,我们是否还会考虑到cookie的使用呢?在使用cookie时,有想过为什么要使用cookie吗?一起来看看吧. Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个open

【转载】python实例手册

今天西爬虫的时候遇到了问题,在网上不停地查找资料,居然碰到两篇好文章: 1.python实例手册   作者:没头脑的土豆 另一篇在这:shell实例手册 python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅 请勿删除信息,转载请说明出处,抵制不道德

[Python]网络爬虫(三):异常的处理和HTTP状态码的分类(转)

先来说一说HTTP的异常处理问题.当urlopen不能够处理一个response时,产生urlError.不过通常的Python APIs异常如ValueError,TypeError等也会同时产生.HTTPError是urlError的子类,通常在特定HTTP URLs中产生. 1.URLError通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生. 这种情况下,异常同样会带有"reason"属性,它是一个tuple(可以理解为不可变的数组),

Python]网络爬虫

Originated From: http://blog.csdn.net/pi9nc/article/details/9734437#comments [Python]网络爬虫(一):抓取网页的含义和URL基本构成 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些

Python网络爬虫实战视频教程

Python网络爬虫实战教程(全套完整版) 课程观看地址:http://www.xuetuwuyou.com/course/168课程出自学途无忧网:http://www.xuetuwuyou.com 课程目录:课时1:课程介绍课时2:Python初识课时3:Python语法基础 课时4:Python控制流与小实例 课时5:答疑环节 课时6:Python函数详解 课时7:Python模块实战 课时8:Python文件操作实战 课时9:Python异常处理实战 课时10:Python面向对象编程

python实例手册

python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅 请勿删除信息,转载请说明出处,抵制不道德行为. 错误在所难免,还望指正! # python实例手册下载地址: http://hi.baidu.com/quanzhou722/item/cf447

python网络爬虫学习资料

第一:Python爬虫学习系列教程(来源于某博主:http://cuiqingcai.com/1052.html) Python版本:2.7 整体目录: 一.爬虫入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫入门四之Urllib库的高级用法 5. Python爬虫入门五之URLError异常处理 6. Python爬虫入门六之Cookie的使用 7. Python爬虫入门七之正则