示例一:urllib2
基本使用1
import urllib2
req = urllib2.request('')
response = urllib2.urlopen(req)
html = response.read()
1、urllib2.request()的功能是構造乙個請求資訊,返回的
req就是乙個構造好的請求。
通過request()
還可構造一些額外的請求資訊(
metadata)
,見例項二。
2、urllib2.urlopen()的功能是傳送剛剛構造好的請求
req,並返回乙個
file
形的物件,
response
,包括了所有的返回資訊。
3、通過response.read()
可以讀取到
response
裡面的**,就是這裡的
html
。html
就是返回的頁面的源**。
例項二:urllib2
基本使用2
通過urllib2.request()
構造乙個有額外資料的請求資訊。包括「
」和想要傳送的資料,這些資料需要被以標準的方式
encode
,然後作為乙個資料引數傳送給
request
物件。encoding
是在urllib
中完成的,而不是在
urllib2
中完成的。看下面**就明白了。
import urllib
import urllib2
url = ''
user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)'
values =
headers =
data = urllib.urlencode(values)
req = urllib2.request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
例項三:build_opener()
import hashlib
import urllib2
req = urllib2.request('')
response1 = urllib2.urlopen(req)
html_1 = response1.read()
handle = urllib2.build_opener()
response2=handle.open(req)
html_2=response2.read()
m = hashlib.md5(html_1)
y = hashlib.md5(html_2)
print m.hexdigest()
print y.hexdigest()
輸入的結果為
21b8daaaf7bb11e480fdd82a6d7772de
21b8daaaf7bb11e480fdd82a6d7772de
可以得知返回的htm1=htm2
所以handle.open
()與urllib2.urlopen()
其實是一樣的。
這能說明build_opener
的什麼問題,還沒有研究過。
例項四:
異常處理
不能處理乙個response時,urlopen
丟擲乙個
是http url
在特別的情況下被丟擲的
urlerror
的乙個子類。
通常,urlerror
被丟擲是因為沒有網路連線(沒有至特定伺服器的連線)或者特定的伺服器不存在。在這種情況下,含有
reason
屬性的異常將被丟擲,以一種包含錯誤**和文字錯誤資訊的
tuple
形式。
>>> req = urllib2.request('')
>>> try: urllib2.urlopen(req)
>>> except urlerror, e:
>>> print e.reason
(4, 'getaddrinfo failed')
當乙個錯誤被丟擲的時候,伺服器返回乙個http
錯誤**和乙個錯誤頁。你可以使用返回的
錯誤示例。這意味著它不但具有
code
屬性,而且 同時具有
read
,geturl
,和info
,methods
屬性。**
urllib2使用總結
urllib2庫是涉及到url資源請求的常用庫 官方文件 urllib2 extensible library for opening urls 常用函式 urllib2.urlopen url data timeout cafile capath cadefault context url 可以是...
urllib2使用總結
urllib2是python的乙個獲取urls的元件。他以urlopen函式的形式提供了乙個非常簡單的介面,具有利用不同協議獲取urls的能力,同樣提供了乙個比較複雜的介面來處理一般情況。urllib2支援獲取不同格式的urls例如 ftp gopher等,並利用它們相關網路協議進行獲取。urlli...
urllib2使用初探
在入門urllib2之前,我想應該先調研一下urllib與urllib2的區別 1 首先我們要明白的是,這兩個模組不可以相互替代.兩者都是接受url請求的模組,但是提供了不同的功能,兩個顯著的區別是 1.對於乙個url的request,urllib2.urlopen可以接受乙個request類的例項...