nnpc.net
当前位置:首页 >> python多线程爬虫 >>

python多线程爬虫

如果是爬虫的话,这个一般都是由于网络原因造成的卡住,可以做两层控制:在http请求上设置好超时时间,最好设定sockect的超时,这样更底层一些.在上层做一个检测机制,定时轮询线程是否正常,如果遇到不响应的直接kill掉.

无疑是python,爬虫是python最擅长的方面之一,有许多强大的爬虫库如scrapy. 而node.js虽然也能做爬虫,但在处理多线程方面受到限制,这是硬伤.

这个没有固定数值,需要根据你爬取目标的访问速度,还有你服务器的性能配置(内存,cpu)来调整.如果解决了您的问题请采纳!如果未解决请继续追问!

import time import threading import Queue class Consumer(threading.Thread): def __init__(self, queue): threading.Thread.__init__(self) self._queue = queue def run(self): while True: # queue.get() blocks the current thread until # an item is

连接对象可以是同一个,指针不能是同一个. 假设conn是你的连接对象每个线程使用cur=conn.cursor()来获得指针.

由于python是一种解释性脚本语言,python的多线程在运行过程中始终存在全局线程锁.简单的来说就是在实际的运行过程中,python只能利用一个线程,因此python的多线程并不达到C语言多线程的性能.可以使用多进程来代替多线程,但需要注意的是多进程最好不要涉及到例如文件操作的频繁操作IO的功能.

def saveToFile(FileName,srcList): a=0 srcTuple = (srcList) FileName = 'os'+FileName.strip() res = mkdir(FileName) if res == False: return False #os.mkdir(FileName) os.chdir(FileName) que = Queue.Queue() for sl in srcList: que.put(sl) for a in range

多线程的例子:import threading import time def show(arg): time.sleep(1) print('thread' + str(arg)) for i in range(10): t = threading.thread(target=show, args=(i,)) t.start() print('main thread stop') 运行效果:

有道的api有限制,同一ip访问频率不可过高,你可以更换ip访问试试,也可以每个线程中sleep几秒

可以这样:filename='FileCookieJar.txt'ckjar = cookielib.MozillaCookieJar()#这里读取cookieckjar.load(filename, ignore_discard=True, ignore_expires=True)for item in ckjar:print "name:" +item.nameprint "Value:"+item.value

beabigtree.com | dzrs.net | xyjl.net | qhnw.net | jingxinwu.net | 网站首页 | 网站地图
All rights reserved Powered by www.nnpc.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com