处理python爬虫的timeout报错

在执行Python爬虫过程中遇到'.timeout'错误,原因是未对请求设置合适的超时处理。错误发生在尝试读取HTTP响应内容时,提示socket超时。解决方法是在请求中添加超时参数,以防止因长时间等待响应导致的程序中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

尽管添加了

import socket
socket.setdefaulttimeout(timeout)
但是在爬虫过程中依然会出现

Traceback (most recent call last):
  File "C:\Users\wenxue5\Documents\Tencent Files\910872628\FileRecv\zongheng.py", line 93, in <module>
    search(line.strip())
  File "C:\Users\wenxue5\Documents\Tencent Files\910872628\FileRecv\zongheng.py", line 60, in search
    the_page = response.read()  #读取反馈的内容
  File "C:\Python27\lib\socket.py", line 349, in read
    data = self._sock.recv(rbufsize)
  File "C:\Python27\lib\httplib.py", line 532, in read
    return self._read_chunked(amt)
  File "C:\Python27\lib\httplib.py", line 590, in _read_chunked
    value.append(self._safe_read(chunk_left))
  File "C:\Python27\lib\httplib.py", line 634, in _safe_read
    chunk = self.fp.read(min(amt, MAXAMOUNT))
  File "C:\Python27\lib\socket.py", line 378, in read
    data = self._sock.recv(left)
timeout: timed out


这是因为没有对timeout进行处理造成的

import urllib2
import socket
#In Python 2.7.3

try:
    urllib2.urlopen("www.baidu.com", timeout = 10)
except urllib2.URLError as e:
    print type(e)    #not catch
except socket.timeout as e:
    print type(e)    #catched



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值