首先,urllib 和 urllib2 是python 自帶的模塊,因此咱們能夠經過官網文檔來查看它們的詳細信息,這裏依然給出網址,感興趣的同窗能夠看一下html
urllib模塊:http://python.usyiyi.cn/python_278/library/urllib.html
python
urllib2模塊:http://python.usyiyi.cn/python_278/library/urllib2.html瀏覽器
這裏仍是簡單的說一下吧,貌似python3中,urllib的庫已經有了一些變化,而咱們一直以來就是使用python2.7,因此python3的改變暫不考慮python2.7
這裏提一個有意思的事情,經常有人會問,新手學python是學習python2仍是python3好,畢竟兩個版本之間的差異仍是挺大的,這個問題我也曾經想過,最後在<笨方法學python>裏面看到了一段話,大意是這樣子的,可能會有人問你或者嘲笑你爲何學習python2而不去學習python3,你能夠這樣回答他,等到你電腦裏面全部的程序都是用python3來編寫的時候再和我說這件事函數
這是一個插曲,可是我爲何最後選擇python2呢?由於我以爲雖然兩個版本之間有差異,可是最基本的語法或者是一些函數是不會改變的,知道了python2的語法,剩下來的就是學習python3中的差別,並且就如今來講,python2的資料要遠多於python3學習
啊又扯遠了,如今來講說urllib 和 urllib2 這兩個模塊,它的做用咱們已經知道了,盜用官方文檔裏面的描述來解釋一下url
"該模塊提供了用於獲取互聯網數據的高層接口"code
可是我以爲很納悶了,按命名來講urllib2應該是urllib的升級版,借用一種說法能夠叫 urllib plus,urllib裏面的函數urllib2應該都有而且更強大才是啊,那爲何在不少時候還要用到urllib呢htm
主要的緣由有如下幾點對象
1. urllib2能夠接受一個Request類的實例來設置URL請求的headers,urllib僅能夠接受URL。這意味着,你不能夠經過urllib模塊假裝你的User Agent字符串等(假裝瀏覽器)
2. urllib提供urlencode方法用來encode發送的data,而urllib2沒有。這是爲什麼urllib常和urllib2一塊兒使用的緣由
3. urllib2模塊比較優點的地方是urlliburllib2.urlopen能夠接受Request對象做爲參數,從而能夠控制HTTP Request的header部
4. urllib.urlretrieve函數以及urllib.quote等一系列quote和unquote功能沒有被加入urllib2中,所以有時也須要urllib的輔助
我或許應該整理一個列表出來,看看哪些是urllib 有而 urllib2 沒有的函數,可是如今沒什麼時間,事後再說吧