我目前正在尝试构建一个多处理python爬虫。我的问题是请求呼叫以某种方式卡住(爬行2-3k页后)。我无法复制原因。
在下面找到http连接的函数(作为我的类的一部分)。如果有人有这个想法,这将是伟大的。
def getPage(self, url):
if url[url.find("://")+3:] not in self.visited:
try:
with closing(self.session.get(url=url, timeout=3.0, stream=True)) as r:
if r.headers['content-type'].find('text/html') == -1:
#print("HEAD FAILED :'%s' -- %s" % (url, os.getpid()))
r.close()
else:
timeout = 3
startTime = time.time()
body = []
for line in r.iter_lines(chunk_size=512, decode_unicode=None, delimiter=None):
body.append(line)
if time.time() > (startTime + timeout):
#print("Content too Long URL: 's%'" % (url))
r.close()
return False
content = b''.join(body)
#print("GET OK '%s'" % (url))
return [content, r.status_code, r.headers, r.elapsed]
except:
pass
return False
我已经使用HTTPScoop检查了我的http连接。 有时连接会永远接收数据。