Проблема при загрузке в файл на python

#python #python-3.x #python-requests

#python #python-3.x #python-запросы

Вопрос:

Я пытаюсь загрузить файл с помощью запросов. Я запускаю его на Python 3.6.5. Ниже приведен мой код:

 import requests 
file_url = "http://codex.cs.yale.edu/avi/db-book/db4/slide-dir/ch1-2.pdf"

r = requests.get(file_url, stream = True) 

with open("python.pdf","wb") as pdf: 
    for chunk in r.iter_content(chunk_size=1024): 
        if chunk: 
            pdf.write(chunk)
  

Получаю приведенную ниже ошибку:

 ConnectionError: HTTPConnectionPool(host='codex.cs.yale.edu', port=80): Max retries exceeded with url: /avi/db-book/db4/slide-dir/ch1-2.pdf (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000001421CF5080>: Failed to establish a new connection: [Errno 11002] getaddrinfo failed',))
  

Я попробовал несколько предложенных методов для решения тех же проблем, таких как увеличение времени ожидания, но это не помогает. Кроме того, эта ссылка работает отлично.

Есть идеи о том, что здесь не так?

Комментарии:

1. У меня все работает нормально. Проверьте ваше соединение тоже.

2. Соединение с @Akhilesh в порядке .. я могу открыть эту ссылку с помощью браузера

3. Можете ли вы попробовать команду wget или curl для pdf, чтобы проверить, действительно ли вы можете загрузить pdf

4. Будьте осторожны, обычно прокси объявляются внутри браузера, в то время как по умолчанию Python не использует прокси…

5. @SergeBallesta Я проверил, что не смог найти ни одного определенного прокси. Он автоматически определяет настройки. Есть какой-нибудь способ найти точную проблему?

Ответ №1:

Я бы предложил использовать поиск поддельных пользовательских агентов, напримерhttps://pypi.org/project/fake-useragent / и использовании вращения прокси-сервера для достижения конечной точки, к которой вы пытаетесь подключиться. Хорошим примером того, как этого добиться, являетсяhttps://www.scrapehero.com/how-to-rotate-proxies-and-ip-addresses-using-python-3 /

Ответ №2:

Проблема была в удаленном терминале. Каким-то образом удаленный терминал не будет выполнять подключения, и это может выдать ошибку. На моем личном компьютере все работало нормально.

Спасибо всем за ваши предложения.