0
以下链接访问我使用刮域的所有URL代码:刮递归使用Scrapy
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors.lxmlhtml import LxmlLinkExtractor
class UrlsSpider(scrapy.Spider):
name = 'urlsspider'
allowed_domains = ['example.com']
start_urls = ['http://example.com/']
rules = (Rule(LxmlLinkExtractor(allow=(), unique=True), callback='parse', follow=True))
def parse(self, response):
for link in LxmlLinkExtractor(allow_domains=self.allowed_domains, unique=True).extract_links(response):
print link.url
yield scrapy.Request(link.url, callback=self.parse)
正如你可以看到,我用unique=True
但它仍然重复打印在终端的网址,而我只想要独特的网址,而不是重复的网址。
任何有关此事的帮助都会非常有帮助。
Scrapy默认使用'scrapy.dupefilters.RFPDupeFilter'来检测和过滤重复的请求。也就是说,你可能在日志输出中多次看到一个URL,但这些只会被命中一次(除非你将'dont_filter'设置为True)。我建议创建一个'Link'项并使用像这样的管道:https://doc.scrapy.org/en/latest/topics/item-pipeline.html?highlight=item%20duplicate#duplicates-filter –