2015-06-19 3 views
0

Я новичок в Scrapy framework & в настоящее время использует его для извлечения статей из нескольких сайтов «Здоровье & Wellness». По некоторым запросам scrapy перенаправляется на домашнюю страницу (это поведение не наблюдается в браузере). Ниже приведен пример:Scrapy перенаправляет на главную страницу для некоторых URL-адресов

Команда: SCRAPY оболочка "http://www.bornfitness.com/blog/page/10/" Результат: 2015-06-19 21: 32: 15 + 0530 [SCRAPY] DEBUG: Веб-служба прослушивает 127.0.0.1:6080 2015- 06-19 21: 32: 15 + 0530 [по умолчанию] INFO: Паук открыт 2015-06-19 21: 32: 15 + 0530 [по умолчанию] DEBUG: перенаправление (301) на http://www.bornfitness.com/ > от http://www.bornfitness.com/blog/page/10/> 2015-06-19 21: 32: 16 + 0530 [по умолчанию] DEBUG: Crawled (200) http://www.bornfitness.com /> (referer: None)

Обратите внимание, что номер страницы в URL-адресе (10) является двузначным числом. Я не вижу этой проблемы с URL-адресами с одностраничным номером страницы (например, 8). Результат: 2015-06-19 21: 43: 15 + 0530 [default] INFO: Паук открыт 2015-06-19 21: 43: 16 + 0530 [default] DEBUG: Crawled (200) http: // www .bornfitness.com/blog/page/8 /> (referer: None)

+0

Вы получаете 301 _before_ 200 за успешную загрузку страницы? т. е. перенаправляет ли страница на стр. 8? – tegancp

ответ

0

Если у вас возникли проблемы с репликацией поведения браузера с помощью scrapy, вы, как правило, хотите посмотреть, что такое то, что передается по-разному, когда ваш браузер разговаривая с сайтом по сравнению с тем, когда ваш паук разговаривает с веб-сайтом. Помните, что веб-сайт (почти всегда) не предназначен для того, чтобы быть приятным для веб-браузеров, но для взаимодействия с веб-браузерами.

для вашей ситуации, если вы посмотрите на заголовках отправляются с вашим запросом Scrapy, вы должны увидеть что-то вроде:

In [1]: request.headers 
Out[1]: 
{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
'Accept-Encoding': 'gzip,deflate', 
'Accept-Language': 'en', 
'User-Agent': 'Scrapy/0.24.6 (+http://scrapy.org)'} 

Если изучить заголовок посланных запросом на то же самое страница вашего веб-браузера, вы можете увидеть что-то вроде:

**Request Headers** 

GET /blog/page/10/ HTTP/1.1  
Host: www.bornfitness.com  
Connection: keep-alive  
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36 
DNT: 1  
Referer: http://www.bornfitness.com/blog/page/11/ 
Accept-Encoding: gzip, deflate, sdch  
Accept-Language: en-US,en;q=0.8 
Cookie: fealty_segment_registeronce=1; ... ... ... 

Попробуйте изменить User-Agent в запросе. Это должно позволить вам обойти перенаправление.

+0

Спасибо, изменив USER_AGENT по умолчанию «Scrapy/0.24.6 (+ http: //scrapy.org)» на «born_fitness» (или что-то еще) разрешил проблему. Любая идея, почему это происходит только для некоторых URL-адресов (/ page/10/but not/page/8 /) и почему только для USER_AGENT 'Scrapy/0.24.6 (+ http: //scrapy.org)'? – Aditya

Смежные вопросы