本文共 1162 字,大约阅读时间需要 3 分钟。
有时候我们在爬取网络数据时,会因为对方网速缓慢、服务器超时等原因, 导致 urllib2.urlopen() 之后的 read()操作(下载内容)卡死,要解决这个问题方法有如下几个:
import urllib2# r = urllib2.Request("")try: print 111111111111111111 f = urllib2.urlopen(r, data=None, timeout=3) print 2222222222222222 result = f.read() print 333333333333333333except Exception,e: print "444444444444444444---------" + str(e)print "55555555555555"
import socketsocket.setdefaulttimeout(10.0) 或者使用:httplib2 or timeout_urllib2
from urllib2 import urlopenfrom threading import Timerurl = ""def handler(fh): fh.close()fh = urlopen(url)t = Timer(20.0, handler,[fh])t.start()data = fh.read() #如果二进制文件需要换成二进制的读取方式t.cancel()
转载地址:http://esbci.baihongyu.com/