Scrapy перенаправляет прямые ссылки - PullRequest
1 голос
/ 05 декабря 2011

Я использую CrawlSpider для сканирования и извлечения данных с веб-страницы.

Начальный URL имеет только одну ссылку (которая является прямой ссылкой), и с этой ссылки данные должны быть очищены (данные удаляются успешно, если я использую BaseSpider и указываю прямую ссылку).Тем не менее, когда я запускаю CrawlSpider, он получает какой-то утомленный запрос 301 и контроль не приходит к parse_item (), который выполняет очистку.

У меня есть страница localhost с именем main_page.html, которая имеет ссылку на http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj?pid=pend4fpkyk2w9fd4&_l=U0SclLhlhi7jGPVIA8xWyA--&_r=tcVDd6I7AkBG9cR2hX21MA--&ref=5b471a78-5264-4e09-ba61-03f8965e10d0 который я считаю прямой ссылкой.При запуске паука для сканирования я вижу следующий вывод в scrapy-

2011-12-05 15: 54: 34 + 0530 [flipkart_spider] ОТЛАДКА: Crawled (200) http://localhost/main_page.html> (реферер:Никто)2011-12-05 15: 54: 35 + 0530 [flipkart_spider] ОТЛАДКА: Перенаправление (301) на http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj?pid=pend4fpkyk2w9fd4&_l=U0SclLhlhi7jGPVIA8xWyA--&_r=tcVDd6I7AkBG9cR2hX21MA--&ref=5b471a78-5264-4e09-ba61-03f8965e10d0> с http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj?_l=U0SclLhlhi7jGPVIA8xWyA--&_r=tcVDd6I7AkBG9cR2hX21MA--&pid=pend4fpkyk2w9fd4&ref=5b471a78-5264-4e09-ba61-03f8965e10d0>

У меня есть оператор печати в parse_item(), который не вызывается.что здесь не так?

1 Ответ

2 голосов
/ 05 декабря 2011

Я думаю, вы должны удалить все после ? в вашем URL, чтобы оно стало: http://www.flipkart.com/office-supplies/pen/faber-castell/itmd4fpkgkd7e3fj

Обновление:

В большинстве случаев атрибуты в строке запроса используются только для вещей, которые не влияют на содержимое, например: с какой страницы вы пришли сюда, какой пункт меню активен, идентификатор сеанса. Если вы копируете URL-адреса из браузера в сканер, возможно, что некоторые аргументы в URL-адресе имеют какое-то отношение к вашему пользовательскому агенту и дают непредсказуемые результаты, когда один и тот же URL-адрес открывается другим агентом.

Вы также спасете себя от множества дублирующих страниц, если будете знать, какие аргументы безопасны для удаления из URL. Обычно вы можете получить доступ к одним и тем же элементам из разных категорий, но каждый раз URL элемента будет отличаться, потому что аргумент ref= Я думаю, сообщает информацию, с какой страницы вы пришли сюда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...