Python urllib2 模块
urllib2.urlopen(url, data=None, timeout=<object object>) :用于打开一个URL,URL可以是一个字符串也可以是一个请求对象,data 用于指定要发送到服务器的额外数据的字符串,timeout 用于设置打开URL的超时时间
In [1]: import urllib2 In [2]: request = urllib2.urlopen('http://www.baidu.com/') # 结果返回一个文件对象 In [3]: data = request.read() # 使用文件对象的read()方法可以读取数据,也可以readline()、readlines()等方法
In [1]: import urllib2 In [2]: url = 'http://www.baidu.com/' In [3]: headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'} In [4]: request = urllib2.Request(url, headers=headers) # 也可以先构造一个请求对象 In [5]: response = urllib2.urlopen(request) # 然后使用 urlopen() 来打开这个请求对象 In [6]: data = response.read()
urllib2.Request(url, data, headers) :用于构造一个请求对象,然后用 urllib2.urlopen() 来打开这个请求对象,data 用于指定要发送到服务器的额外数据的字符串,headers 用于指定请求头,请求头可以在浏览器按 F12 查看
In [1]: import urllib2 In [2]: url = 'http://www.baidu.com/' # User-Agent 表示使用哪个浏览器打开 In [3]: headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'} In [4]: request = urllib2.Request(url, headers=headers) In [5]: response = urllib2.urlopen(request) In [6]: data = response.read()
urllib2.URLError :这是一个异常类,如果我们使用 urlopen() 打开一个URL,打开失败就会抛出这个异常,失败的原因主要有:没有网络连接 、服务器连接失败 、找不到指定的服务器
urllib2.HTTPError :这是 URLError 异常类的子类,在你利用 urlopen() 方法发送一个请求时,服务器会响应并返回请求的内容,使用 urllib2.HTTPError 可以获取返回的请求头中的 HTTP 状态码
urllib2.HTTPError 这个类包含了 code 属性,urllib2.URLError 这个类包含了 code 和 reason 属性,code 即 HTTP 状态码,如 200,403,502 等,reason 用于描述失败的原因,一般我们只使用 urllib2.URLError 这个异常类
import urllib2 try: urllib2.urlopen('http://blog.csdn.net/cqcrek') except urllib2.URLError, e: if hasattr(e, 'code'): print '连接服务器失败,错误代码:%s' % e.code if hasattr(e, 'reason'): print '连接服务器失败,失败原因:%s' % e.reason else: print '连接服务器失败,失败原因:%s' % e else: print 'OK'