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'
