2015-05-13 2 views
0

я получаю следующий журнал при сканировании:Scrapy: как я могу получить содержание страниц, у которых response.status = 302?

DEBUG: Crawled (302) <GET http://fuyuanxincun.fang.com/xiangqing/> (referer: http://esf.hz.fang.com/housing/151__1_0_0_0_2_0_0/) 
DEBUG: Scraped from <302 http://fuyuanxincun.fang.com/xiangqing/> 

Но это на самом деле ничего не возвращает. Как я могу справиться с этим ответом со статусом = 302?

Любая помощь была бы высоко оценена!

+0

Btw, Scrapy обрабатывает их автоматически, если вы оставите его из 'handle_httpstatus_list'. – elias

ответ

0

Статус HTTP 302 означает перемещение временно. Когда я делаю HTTP-запрос GET на url http://fuyuanxincun.fang.com/xiangqing/, он показывает мне статус HTTP 200. Как правило, сервер не отправляет ничего после отправки кода состояния 302 (хотя техническая отправка данных после 302 возможна).

Причина, почему вы получите статус HTTP 302 может быть один из следующих:

  1. Сайт не служит его содержание, когда конкретный реферер (например: http://esf.hz.fang.com/housing/151__1_0_0_0_2_0_0/) присутствует.
  2. Вы не отправляли HTTP-заголовки, которые сервер хочет видеть. Например, как определенный User-Agent. Веб-сайт может решить отклонить запросы без определенного заголовка, отправив статус HTTP 302 вместо статуса HTTP 200.
  3. Конкретный IP-адрес, на который вы пытаетесь отправить запрос, исключается веб-сайтом, который вы пытаетесь собрать.

Я бы рекомендовал:

  1. Сделать запрос выглядеть как "реальный" запрос браузера в (сообщаться similair заголовки).
  2. Попробуйте отправить запрос с другого IP-адреса.
  3. Попробуйте отправить запрос с помощью (рандомизированного) User-Agent.

Я сделал запрос на время UTC 7:30:29 Среде, 13 мая 2015, поведение веб-сайта может быть изменено в то время между вашим и моим запросом.

Также может быть полезно отправить полный запрос и ответ на RAW-HTTP.

+0

спасибо за ваше конкретное объяснение, карлик! Это очень помогает, поскольку я мало знаю об HTTP. Я использовал некоторые пользовательские агенты и IP-адреса, но я не могу убедиться, что все мои User-агенты эффективны. Вы знаете, как тестировать User-Agent? – April

+0

Вы можете попробовать сделать, например, несколько запросов с различными пользовательскими агентами. И проверьте, отличаются ли заголовки HTTP/код состояния между запросами. Это не идеально, но это может дать вам указание на потенциальную проблему с пользователем-агентом. –

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

  • Нет связанных вопросов^_^