之前看python, 知道有urllib和urllib2兩個模塊,但是一直沒有去深入學習, 也並不清楚爲什麼有了urllib2還要保留urllib,最近接觸一點爬蟲的知識,用到了urllib和urllib2, 在此做一點記錄,記錄這兩個模塊的區別以便日後查看.
urllib和urllib2模塊都做與請求URl相關的操作,但是提供的功能卻不盡相同.
urllib2.urlopen可以接受一個Request 對象或者url,而urllib.urlopen只能接受一個url
在交互解釋器中查看兩個函數的幫助可以看到>>> import urllib,urllib >>> help(urllib.urlopen) Help on function urlopen in module urllib: urlopen(url, data=None, proxies=None) Create a file-like object for the specified URL to read from. (END) >>> help(urllib2.urlopen) > Help on function urlopen in module urllib2: urlopen(url, data=None, timeout=<object object>) (END)
urllib 有urlencode,urllib2沒有,這也是爲什麼總是urllib,urllib2常會一起使用的原因
- 如果只是單純的下載或者顯示下載進度,不對下載後的內容做處理等,比如下載圖片,css,js文件等,可以用urlilb.urlretrieve()
如果是下載的請求需要填寫表單,輸入賬號,密碼等,建議用urllib2.urlopen(urllib2.Request())
在對字典數據編碼時候,用到的是urllib.urlencode()