
9

Python爬虫编程思想(9):用urllib处理请求超时
source link: https://blog.csdn.net/nokiaguy/article/details/118851381
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

当向服务端发送HTTP请求时,通常很快就会得到响应,但由于某些原因,服务端可能迟迟没有响应(很大程度上是服务端吞吐量不够,你的请求正在排队),这样HTTP链接就会一直等待,知道超过预设的等待时间,这个等待时间就是请求超时。通常请求超时都比较大,这样以来,如果服务端半天没有响应,那么客户端就会一直在那等待。这对于爬虫来说是非常不妥的。因为爬虫通常会启动一个或多个线程抓取Web资源。如果这时有一个线程由于服务端没有响应而一直在那里等待,那么就相当于浪费了一个人力。所以需要将这个请求超时设置的比较小,即使服务端没有响应,客户端也不必长时间等待。在过了请求超时后,客户端就会抛出异常,然后可以根据业务需求做进一步的处理,例如,将这个URL进行标记,以后不再抓取,或重新抓取这个URL对应的Web资源。
请求超时需要通过urlopen函数的timeout命名参数进行设置,单位为秒。
下面看一个例子:
由于绝大多数网站不太可能在0.1秒内响应客户端的请求,所以上面的代码基本上可以肯定会抛出超时异常(timeout exception)。
运行结果如图1所示。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK