我使用pyspider下载pdf文件,具体爬虫代码如下:
@config(priority=2)
def detail_page(self, response):
author = []
for each in response.doc('h2 a').items():
author.push(each.text())
file = self.down_file(response.doc('.download-links a[href^="http"]').attr.href)
return {
"author": ",".join(author),
"title": file,
}
def down_file(self, file_url):
file_name = file_url.split('/')[-1]
u = urllib2.urlopen(file_url)
f = open(file_name, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
f.close()
return file_name
结果爬取超时TimeoutError: process timeout,不知该如何处理?
不要在脚本中调用 urllib2.urlopen,这样会柱塞脚本的运行。
如果文件小于10M,使用 self.crawl 抓取即可,如果大于10M,将链接导出到另外的系统中进行下载。