当前位置:首页 > python多线程抓取网站的相关技术

python多线程抓取网站的相关技术

点击次数:3398  更新日期:2014-05-14

Python多线程在不断的使用中需要我们更多的学习相关的技术知识。单线程太慢的话,就需要Python多线程了,这里给个简单的线程池模板。这个程序只是简单地打印了110,但是可以看出是并发地。


from threading import Thread  
from Queue import Queue  
from time import sleep  
#q是任务队列  
#NUM是并发线程总数  
#JOBS是有多少任务  
q = Queue()  
NUM = 2 
JOBS = 10 
#具体的处理函数,负责处理单个任务  
def do_somthing_using(arguments):  
print arguments  
#这个是工作进程,负责不断从队列取数据并处理  
def working():  
while True:  
arguments = q.get()  
do_somthing_using(arguments)  
sleep(1)  
q.task_done()  
#fork NUM个线程等待队列  
for i in range(NUM):  
t = Thread(target=working)  
t.setDaemon(True)  
t.start()  
#把JOBS排入队列  
for i in range(JOBS):  
q.put(i)  
#等待所有JOBS完成 
q.join()5.验证码的处理碰到验证码咋办?这里分两种情况处理:


google那种验证码,凉拌


简单的验证码:字符个数有限,只使用了简单的平移或旋转加噪音而没有扭曲的,这种还是有可能可以处理的,一般思路是旋转的转回来,噪音去掉,然后划分 单个字符,划分好了以后再通过特征提取的方法(例如PCA) 降维并生成特征库,然后把验证码和特征库进行比较。这个比较复杂,一篇博文是说不完的,这里就不展开了,具体做法请弄本相关教科书好好研究一下。


事实上有些验证码还是很弱的,这里就不点名了,反正我通过2的方法提取过准确度非常高的验证码,所以2事实上是可行的。


基本上我遇到过的所有情况,用以上方法都顺利解决了,不太清楚还有没有其他漏掉的情况,所以本文到这里就完成了,以后要是碰上其他情况,再补充相关方法好 了