正如保罗所说,HttpCache Middleware 可能对您有用,但我建议您编写自己的自定义管道。
Scrapy 具有将数据导出到文件的内置方法,但它们适用于 json、xml 和 csv 而不是原始 html。不要担心,虽然它不是太难!
提供您的items.py
外观类似于:
from scrapy.item import Item, Field
class Listing(Item):
url = Field()
html = Field()
并且您一直在将抓取的数据保存到蜘蛛中的这些项目中,如下所示:
item['url'] = response.url
item['html'] = response.body
你pipelines.py
会是:
import hashlib
class HtmlFilePipeline(object):
def process_item(self, item, spider):
file_name = hashlib.sha224(item['url']).hexdigest() #chose whatever hashing func works for you
with open('files/%s.html' % file_name, 'w+b') as f:
f.write(item['html'])
希望有帮助。哦,不要忘记files/
在项目根目录中放置一个目录并添加到您的settings.py
:
ITEM_PIPELINES = {
'myproject.pipeline.HtmlFilePipeline': 300,
}
来源:http ://doc.scrapy.org/en/latest/topics/item-pipeline.html