ReadTimeout:HTTPSConnectionPool(host ='',端口= 443):读取超时。 (读取超时= 10)

时间:2019-09-18 14:00:52

标签: python python-3.x web-scraping beautifulsoup python-requests

我正在网站上进行网络爬虫,有时在运行脚本时出现此错误:

ReadTimeout: HTTPSConnectionPool(host='...', port=443): Read timed out. (read timeout=10)

我的代码:

url = 'mysite.com'
all_links_page = []
page_one = requests.get(url, headers=getHeaders(), timeout=10)
sleep(2)
if page_one.status_code == requests.codes.ok:
    soup_one = BeautifulSoup(page_one.content.decode('utf-8'), 'lxml')
    page_links_one = soup_one.select("ul.product_list") 

    for links_one in page_links_one:
        for li in links_one.select("li"):
            all_links_page.append(li.a.get("href").strip())

我发现的答案并不令人满意

3 个答案:

答案 0 :(得分:4)

我通过增加超时得到了帮助,立即设置了 120 秒。原来服务器的响应是在 40 秒内到达的。

答案 1 :(得分:1)

为什么在那里有timeout参数?我只是消除超时参数。收到该错误的原因是,将其设置为10表示如果在10秒钟内未收到服务器的响应,请加薪并出错。因此,不一定是服务器将您召唤出去。如果未明确指定任何超时,则请求不会超时(至少在您端而言)。

page_one = requests.get(url, headers=headers)  #< --- don't use the timeout parameter

答案 2 :(得分:0)

此异常可能是由于超时或可用内存:

  • 来自服务器的响应时间超过指定的超时时间。因此,要解决此问题,您需要设置更高的超时时间。
  • 您尝试读取的文件很大,套接字缓冲区不足以处理它。因此,您可以尝试根据机器的容量增加缓冲区大小。
        import urllib3, socket
        from urllib3.connection import HTTPConnection
    
        HTTPConnection.default_socket_options = ( 
            HTTPConnection.default_socket_options + [
            (socket.SOL_SOCKET, socket.SO_SNDBUF, 1000000), #1MB in byte
            (socket.SOL_SOCKET, socket.SO_RCVBUF, 1000000)
        ])