Web scraping 抓取区分大小写的URL,但使用Scrapy抓取不区分大小写的URL

Web scraping 抓取区分大小写的URL,但使用Scrapy抓取不区分大小写的URL,web-scraping,scrapy,web-crawler,case-sensitive,Web Scraping,Scrapy,Web Crawler,Case Sensitive,我使用Scrapy来抓取和刮取许多网站。Scrapy需要以区分大小写的模式抓取URL,因为这是请求网页时的重要信息。许多网站使用相同URL的不同外壳链接到某些网页,从而愚弄Scrapy创建重复的Scrape 例如,页面链接到和 我们需要Scrapy来收集这两个页面,因为当我们看到User1.php页面时,我们还不知道稍后将通过User1.php收集它的克隆。在爬网期间,我们也不能使用小写,因为当页面不可用时,服务器可能会返回404错误 因此,我正在寻找一种解决方案,告诉Scrapy以区分大小写的

我使用Scrapy来抓取和刮取许多网站。Scrapy需要以区分大小写的模式抓取URL,因为这是请求网页时的重要信息。许多网站使用相同URL的不同外壳链接到某些网页,从而愚弄Scrapy创建重复的Scrape

例如,页面链接到和

我们需要Scrapy来收集这两个页面,因为当我们看到User1.php页面时,我们还不知道稍后将通过User1.php收集它的克隆。在爬网期间,我们也不能使用小写,因为当页面不可用时,服务器可能会返回404错误

因此,我正在寻找一种解决方案,告诉Scrapy以区分大小写的模式抓取URL,但在收集页面后,在刮取之前以不区分大小写的模式对其进行复制筛选,以消除重复的风险


是否有人知道如何同时在两种模式下操作Scrapy。

您可能需要创建一个自定义的
DupeFilter
,然后在
设置中设置.py

您可能很幸运,只需对现有的
RFPDupeFilter
进行子类化,并在这种情况下插入一行代码,即可在提取指纹之前折叠URL:

类MyDupeFilter(RFPDupeFilter):
已看到def请求(自我,请求):
lc_req=request.replace(url=request.url.lower())
返回超级(MyDupeFilter,self)。已看到请求(lc\U req)
事实上,这听起来像是一个很常见的特性,如果你发现改变适合你,那么就向Scrapy提交一份PR来添加,这样其他人就可以从改变中受益