Статус HTTP 302 означает перемещение временно. Когда я делаю HTTP-запрос GET на url http://fuyuanxincun.fang.com/xiangqing/, он показывает мне статус HTTP 200. Как правило, сервер не отправляет ничего после отправки кода состояния 302 (хотя техническая отправка данных после 302 возможна).
Причина, почему вы получите статус HTTP 302 может быть один из следующих:
- Сайт не служит его содержание, когда конкретный реферер (например: http://esf.hz.fang.com/housing/151__1_0_0_0_2_0_0/) присутствует.
- Вы не отправляли HTTP-заголовки, которые сервер хочет видеть. Например, как определенный User-Agent. Веб-сайт может решить отклонить запросы без определенного заголовка, отправив статус HTTP 302 вместо статуса HTTP 200.
- Конкретный IP-адрес, на который вы пытаетесь отправить запрос, исключается веб-сайтом, который вы пытаетесь собрать.
Я бы рекомендовал:
- Сделать запрос выглядеть как "реальный" запрос браузера в (сообщаться similair заголовки).
- Попробуйте отправить запрос с другого IP-адреса.
- Попробуйте отправить запрос с помощью (рандомизированного) User-Agent.
Я сделал запрос на время UTC 7:30:29 Среде, 13 мая 2015, поведение веб-сайта может быть изменено в то время между вашим и моим запросом.
Также может быть полезно отправить полный запрос и ответ на RAW-HTTP.
Btw, Scrapy обрабатывает их автоматически, если вы оставите его из 'handle_httpstatus_list'. – elias