Python爬虫编程思想:用urllib处理请求超时

Posted 蒙娜丽宁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫编程思想:用urllib处理请求超时相关的知识,希望对你有一定的参考价值。

        Python爬虫编程思想(10):通过urllib设置HTTP请求头

        当向服务端发送HTTP请求时,通常很快就会得到响应,但由于某些原因,服务端可能迟迟没有响应(很大程度上是服务端吞吐量不够,你的请求正在排队),这样HTTP链接就会一直等待,知道超过预设的等待时间,这个等待时间就是请求超时。通常请求超时都比较大,这样以来,如果服务端半天没有响应,那么客户端就会一直在那等待。这对于爬虫来说是非常不妥的。因为爬虫通常会启动一个或多个线程抓取Web资源。如果这时有一个线程由于服务端没有响应而一直在那里等待,那么就相当于浪费了一个人力。所以需要将这个请求超时设置的比较小,即使服务端没有响应,客户端也不必长时间等待。在过了请求超时后,客户端就会抛出异常,然后可以根据业务需求做进一步的处理,例如,将这个URL进行标记,以后不再抓取,或重新抓取这个URL对应的Web资源。

        请求超时需要通过urlopen函数的timeout命名参数进行设置,单位为秒。

下面看一个例子:

import urllib.request

# 将请求超时设为0.1秒

response=urllib.request.urlopen(\'http://httpbin.org/get\',timeout=0.1)

        由于绝大多数网站不太可能在0.1秒内响应客户端的请求,所以上面的代码基本上可

以上是关于Python爬虫编程思想:用urllib处理请求超时的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫编程思想(18):使用urllib3处理HTTP请求头和HTTP响应头

Python爬虫编程思想(19):使用urllib3上传文件与处理超时

Python爬虫编程思想(11):用urllib请求基础验证页面

Python爬虫编程思想(10):通过urllib设置HTTP请求头

Python爬虫编程思想(17):使用urllib3发送HTTP Get和HTTP POST请求

Python爬虫编程思想(25):使用requests实现身份验证和请求打包