python2和3對於爬蟲時訪問URL的不同

2021-09-13 20:05:18 字數 1873 閱讀 1744

先上乾貨:

print (getimg(html))python2的urllib、urllib2在python3中集合成了urllib模組,urllib庫包含下面幾個內容:

urllib.request

urllib.error

urllib.parse

urllib.robotparser

區別點:

python3中urllib模組和python2中的urllib、urllib2模組中函式區別很大。

python2中urlopen()函式返回的是addinfourl物件:addinfourl物件實際上是乙個類似於檔案的物件,大概包括read()、readline()、readlines()、fileno()、close()、info()、getcode()和geturl()函式,其實這裡隱藏了乙個巨大的缺陷:返回的網頁內容實際上已經被預設解碼了,而不是由自己決定如何解碼。

python3中urlopen()函式返回的是http.client.httpresponse物件:http.client.httpresponse物件大概包括read()、readinto()、getheader()、getheaders()、fileno()、msg、version、status、reason、debuglevel和closed函式,其實一般而言使用read()函式後還需要decode()函式,這裡乙個巨大的優勢就是:返回的網頁內容實際上是沒有被解碼的,在read()得到內容後通過指定decode()函式引數,可以使用對應的解碼方式。gbk編碼的網頁使用』gbk』解碼,utf-8編碼的就是』utf-8』了,這樣幾乎可以避免所有的python2中編碼錯誤的問題!

python 2 和python 3 中的編碼對比

在 python 中,不論是 python2 還是 python3 中,總體上說,字元都只有兩大類 python2 中字元的型別 python3 中字元的型別 我們可以認為字串有兩種狀態,即文字狀態和位元組 二進位制 狀態。python2 和 python3 中的兩種字元型別都分別對應這兩種狀態,然...

網路爬蟲 從python2到python3

很久以前,python2的時候,簡單的弄過一點爬蟲程式,後來,到3之後,發現之前的好多程式都特麼不能用了,最最基本的抓頁面都不行了,就重新寫了乙個。python2縮寫版,大概是這樣的,忘記了沒驗證 import urllib2 response urllib2.urlopen html respon...

python2和3 的區別

python2和python3分別是python的兩個版本,python3作為乙個公升級版,許多針對早期python版本設計的程式都無法在python3.0上正常執行的。區別 python2 既可以使用帶小括號的方式,也可以使用乙個空格來分隔列印內容,比如 print hi python3 使用 p...