2017-02-14 5 views
1

Я попытался следующий код в PythonPython TooManyRedirects: Превышенные 30 перенаправляет

url="http://www.realtor.com/realestateandhomes-search/Pittsburgh_PA/type-single-family-home/price-na-30000/sby-1/" 
r=requests.get(url) 

но бросает EROR

File "C:\Users\Dana\AppData\Local\Programs\Python\Python35-32\lib\site-package 
s\requests\sessions.py", line 630, in send 
    history = [resp for resp in gen] if allow_redirects else [] 
    File "C:\Users\Dana\AppData\Local\Programs\Python\Python35-32\lib\site-package 
s\requests\sessions.py", line 630, in <listcomp> 
    history = [resp for resp in gen] if allow_redirects else [] 
    File "C:\Users\Dana\AppData\Local\Programs\Python\Python35-32\lib\site-package 
s\requests\sessions.py", line 111, in resolve_redirects 
    raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, respon 
se=resp) 
requests.exceptions.TooManyRedirects: Exceeded 30 redirects. 

Любая помощь будет высоко оценен

ответ

3

Это просто означает, что ваш запрос получил разрешение ponse, который был перенаправлением (информация, которую страница, которую вы пытались достичь, теперь находится в новом месте). Библиотека requests понимает это по умолчанию и не возвращает этот результат, но ищет другой запрос для нового местоположения. Что снова вернуло перенаправление и т. Д.

Чтобы избежать выхода из вызова requests, существует предел для количества переадресаций, разрешенных до того, как процесс будет прерван.

Я предполагаю, что на сайте, на котором вы пытаетесь запросить что-либо, есть ошибка, возможно, круговое перенаправление.

Вы можете настроить requests библиотеку, чтобы не следовать редиректов, но вместо этого вернуть их, то вы не получите эту ошибку (но, конечно, перенаправление ответов):

response = requests.get(url, allow_redirects=False) 
+0

Я попытался использовать эту информацию, и нет никакой ошибки в этом случае, но на странице я стараюсь лом не загружается в переменном. Есть ли способ избежать этой ошибки, но также иметь страницу, загруженную в python? – Andrei

0

Иногда, не часто, это может произойти если вы не включаете заголовки, ожидаемые сервером. Если вы имитируете заголовки, полезную нагрузку, пользовательский агент и т. Д. С дополнительными опциями, доступными в requests .get(), вы вряд ли получите эту ошибку.

Пример:

import requests 

headers = { 
    'Accept-Encoding': 'gzip, deflate, sdch', 
    'Accept-Language': 'en-US,en;q=0.8', 
    'Upgrade-Insecure-Requests': '1', 
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
    'Cache-Control': 'max-age=0', 
    'Connection': 'keep-alive', 
} 

requests.get('http://www.realtor.com/realestateandhomes-search/Pittsburgh_PA/type-single-family-home/price-na-30000/sby-1', headers=headers) 
+0

Не могли бы вы объяснить/привести пример, как я могу имитировать заголовки, полезную нагрузку и т. Д. – Andrei

+0

Конечно, добавлен пример. –