繁体   English   中英

搜寻不区分大小写的URL,且不重复

[英]Crawling case-insensitive URLs without duplicates

我爬行了一套使用scrapy网址是区分大小写的,这样http://www.example.com/ABC/1是在同一个页面http://www.example.com/abc/1 在我的CrawlSpider中,我的运行类似于:

Rule(LinkExtractor(allow=('(?i)http://www.example.com/abc/\d+', ))

它可以同时使用这两种变体,但由于复制过滤器将它们视为不同的页面,因此我最终对页面进行了两次爬网。

有没有一种简单的方法可以强制scrapy只访问一个变体或另一个变体(但不能同时访问两个变体),而无需RFPDupeFilter子类并更改DUPEFILTER_CLASS设置? 还是最好的解决方案?

Scrapy的规则类具有process_links属性,可用于将所有链接标准化为小写。 要点:

def links_as_lower(links):
    for link in links:
        link.url = link.url.lower()
        yield link

Rule(LinkExtractor(allow=('(?i)http://www.example/abc/\d+', ), process_links=links_as_lower)

有关scrapy规则的完整文档在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM