碎片增量获取不起作用

2024-09-30 06:14:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是0.20

我不想爬网已经刮掉的网址。在

我正在使用deltafetch加载项。在

我将此设置为:

SPIDER_MIDDLEWARES = {
    'TestSpider.deltafetch.DeltaFetch': 100,
}
DELTAFETCH_ENABLED = True
DOTSCRAPY_ENABLED = True

但是蜘蛛一直在爬已经刮过的东西。在

在我的日志文件中。没有Ignoring already visited:,这是在deltafetch中记录的单词。因此,条件if self.db.has_key(key):永远不会变为真


Tags: 文件keytrueenabledspider蜘蛛网址middlewares
1条回答
网友
1楼 · 发布于 2024-09-30 06:14:54

我会要求澄清,但我不能。所以我只能说,我遇到了同样的问题。我只是在一个站点上爬行,然后把响应体写入一个文件:

def parse_funstuff(self, response):
    filename = response.url.split("/")[-1]
    open(filename, 'wb').write(response.body)

scrapy+deltafetch没有将其视为正在抓取任何内容,因此没有将其记录到deltafetch数据库中。在

如果您正在执行相同或类似的操作,要么将文件下载作为一个项来实现(还不确定如何实现),要么像我一样实现一个变通方法;我只是在parse_funstuff中实现了一个项,用从目标xml文件中提取的任意值填充该项。这被写入输出xml文件,“scrapy crawl test_fun set FEED_FORMAT=xml”,它与我下载的xml文件不同。这样,scrapy+deltafetch可以看到从每个.xml文件url中获取的内容,并在随后的爬网中忽略它。我在parse_funstuff中添加了以下内容:

^{pr2}$

这就解决了我的问题。检查你的日志,确保scrapy+deltafetch认为你确实刮了些东西,仅仅一个“GET”似乎还不够,确保你在日志中看到了“scraped from”。在

相关问题 更多 >

    热门问题