Я полный 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, но я просто не знаю, как это сделать. И я предпочел бы избежать жесткого кодирования случая для этого сайта и найти решение, которое будет работать для этого сценария независимо от. Любая информация будет принята с благодарностью.