在解析页面时,我需要加载其他页面以收集其他信息,但是我不需要将这些页面自己抓取。它们不在抓取范围内,仅在构建父页面的抓取内容时才需要。我使用requests
来做到这一点,并且效果很好:
# Code fragment
def parse(self, response):
for link in links:
resp = requests.get(link)
if resp.status_code == requests.codes.ok:
soup = BeautifulSoup(resp.text, features='lxml')
# Append to my metadata
yield # augmented metadata
但是,这些页面没有被缓存,因此当我使用Scrapy缓存重复抓取时,总是会重新加载这些辅助页面。我想将它们手动添加到解析代码中的Scrapy缓存中。是否可以以编程方式编辑Scrapy缓存?
我认为使用scrapy.Request()
对象可能会使我陷入Scrapy的基础架构(包括缓存)中,但是我看不到一种使用其获取内容的方法。似乎只能由Scrapy调用。