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