避免避免外部链接丢失协议

时间:2019-03-06 19:50:34

标签: python scrapy

我一共是Scrapy n00b,遇到了麻烦的情况。我要抓取的网站上的几个页面包含以下格式的外部链接:

<a href="www.externalsite.com/somepage">www.externalsite.com/somepage.</a>

问题在于,由于链接中缺少协议,Scrapy采取了完全合理的行动,即获取链接并将基础域预先添加到链接中,从而形成如下链接:

https://www.basedomain.com/page1/www.externalsite.com/somepage

这是完全合理的,因为当您单击缺少协议的外部链接时,这与浏览器所执行的操作相同。问题在于,在Scrapy中,这会无限期地跟随以下链接创建蜘蛛陷阱:

https://www.basedomain.com/page1/www.externalsite.com/somepage/www.externalsite.com/somepage
https://www.basedomain.com/page1/www.externalsite.com/somepage/www.externalsite.com/somepage/www.externalsite.com/somepage

最终,URL太长了,服务器返回500,循环停止。

我知道LinkExtractor必须有一种避免该问题的方法,但我只是不知道该怎么做。而且,我宁愿避免对该网站的案例进行硬编码,而要找到一种适用于此方案的解决方案。任何信息将不胜感激。

0 个答案:

没有答案