[原]Python爬虫编程思想(9):用urllib处理请求超时
2021-07-17 09:22:41 Author: blog.csdn.net(查看原文) 阅读量:165 收藏

        当向服务端发送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秒内响应客户端的请求,所以上面的代码基本上可以肯定会抛出超时异常(timeout exception)。

运行结果如图1所示。


文章来源: https://blog.csdn.net/nokiaguy/article/details/118851381
如有侵权请联系:admin#unsafe.sh