python - requests.get (Соединение прервано. ', OSError ("(60,' ETIMEDOUT ') - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в веб-парсере, пытался получить доступ к веб-сайту, но получил слишком много ошибок и получил сообщение (Соединение прервано. ', OSError ("(60,' ETIMEDOUT ').

from bs4 import BeautifulSoup
import requests
urla="https://www.loopnet.com/search/office-space/san-diego-ca/for-lease/?sk=02fa1ad85634ef43bfd21f24bbe3a14a"
source = requests.get(urla).text
print(source)

OSError Traceback (последний вызов - последним) ~ / opt / anaconda3 / lib / python3 .7 / site-packages / urllib3 / connectionpool.py в urlopen (self, method, url, body, headers, retries, redirect , assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, ** response_kw) 671 headers = headers, -> 672 chunked = chunked, 1343 try: -> 1344 response.begin () 1345 кроме ConnectionError:

~ / opt / anaconda3 / lib / python3 .7 / http / client.py в begin (self) 305, в то время как True: -> версия 306, статус, причина = self._read_status () 307, если статус! = ПРОДОЛЖИТЬ :

~ / opt / anaconda3 / lib / python3 .7 / http / client.py в _read_status (self) 266 def _read_status (self): -> 267 line = str (self.fp. readline (_MAXLINE + 1), "iso-8859-1") 268 если len (строка)> _MAXLINE:

~ / opt / anaconda3 / lib / python3 .7 / socket.py в readinto ( self, b) 588 try: -> 589 return self._sock.recv_into (b) 590 кроме тайм-аута:

~ / opt / anaconda3 / lib / python3 .7 / site-packages / urllib3 / contrib / pyopenssl.py в recv_into (self, * args, ** kwargs) 317 else: -> 318 raise SocketError (str (e)) 319 за исключением OpenSSL.SSL.ZeroReturnError:

OSError: (60, 'ETIMEDOUT')

Во время обработки выше исключение, произошло другое исключение:

ProtocolError Traceback (последний вызов последний) ~ / opt / anaconda3 / lib / python3 .7 / site-packages / requests / adapters.py в send (self, request , поток, тайм-аут, проверка, сертификат, прокси) 448 повторов = self.max_retries, -> 449 тайм-аут = тайм-аут 450)

~ / opt / anaconda3 / lib / python3 .7 / site-packages /urllib3/connectionpool.py в urlopen (self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, ** response_kw) 719 retries = retries.increment (-> 720 method, url, error = e, _pool = self, _stacktrace = sys.exc_info () [2] 721)

ConnectionError: ('Соединение прервано.', OSError ("(60, 'ETIMEDOUT')" )) (Примерно так)

1 Ответ

0 голосов
/ 14 июля 2020

Причина, по которой вы получаете эту ошибку, заключается в том, что сервер не отвечает или слишком долго отвечает. вы всегда должны инкапсулировать запросы в блок try, чтобы избежать программы cra sh. Таким образом вы можете отловить любую ошибку или указать c ошибки с помощью модуля requests.exceptions

import requests
url="https://www.loopnet.com/search/office-space/san-diego-ca/for-lease/?sk=02fa1ad85634ef43bfd21f24bbe3a14a"

Поймать любую ошибку

try:
    source = requests.get(url).text
except:
    print 'ERROR'

Поймать ошибку соединения

from requests.exceptions import ConnectionError

try:
    source = requests.get(url).text
except ConnectionError:                  # <-- this is your case scenario
    print 'NOT RESPONDING'

Catch TimeoutError

from requests.exceptions import ReadTimeout

try:
    source = requests.get(url, timeout=2).text  # <-- you should always use timeout to avoid requests hanging or taking too long to respond
except ReadTimeout:
    print 'TIMEOUT'

Вы можете просмотреть все исключения запросов, как это

for exception in dir(requests.exceptions):
    print exception

Документы по исключениям запросов на чтение здесь: https://requests.readthedocs.io/en/latest/user/quickstart/#errors -and-exceptions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...