通过设置timeout参数即超时时间来控制一个网页如果长时间未响应,就跳过对它的抓取,这可以利用try和except来实现
import urllib.request
import socket
import urllib.error
try:
response=urllib.request.urlopen("http://python.org",timeout=0.1) #获取服务器返回的信息
except urllib.error.URLError as e:
if isinstance(e.reason,socket.timeout):
print("TIME OUT")
urllib.request.Request的参数设置:
参数headers是一个字典,它就是请求头,我们可以在构造请求是通过headers参数直接构造,也可以通过实例的add_header()方法添加。添加请求头最常用的用法就是通过修改User_Agent来伪装浏览器,默认的User-Agent是Python-urllib,我们可以通过修改它来伪装浏览器。如下代码是伪装成火狐浏览器,windows系统。
req.add_header("User-Agent","Mozilla/4.0(compatible;MSIE 5.5;Windows NT)")