所以,我有一个包含大量文章和页码的页面。现在,如果我要提取一篇文章,我会使用:
Rule(LinkExtractor(allow=['article\/.+\.html']), callback='parse_article')
我使用此规则的页面: 规则(LinkExtractor(允许='页= \ d +'))
所以我最终得到了这些规则:
rules = [
Rule(LinkExtractor(allow='page=\d+')),
Rule(LinkExtractor(allow=['article\/.+\.html']), callback='parse_article')
]
我的问题是,我会重复翻页吗?如何,它是否会从第1,2,4,5,6页提取第3页(直到第3页不再可见)并将其添加到提取的链接列表中?或者它只保留最终的唯一网址?
答案 0 :(得分:2)
默认情况下,LinkExtractor
应仅返回唯一链接。 There is an optional parameter, unique
, which is True
by default
但这只能确保从每个页面提取的链接是唯一的。如果在后一页上出现相同的链接,则会再次提取该链接。
默认情况下,根据DUPEFILTER_CLASS
设置,您的蜘蛛应自动确保它不会再次访问相同的网址。唯一需要注意的是,如果再次停止并启动蜘蛛,则会重置访问过的URL的记录。请查看文档中的"Jobs: pausing and resuming crawls",了解暂停和恢复蜘蛛时如何保留信息。