1. 程式人生 > >python2.x 和python3.x 中urllib的區別,並簡單使用

python2.x 和python3.x 中urllib的區別,並簡單使用

urllb  的常見變化有:

         在Python2.x中使用import.urllib2 -----------對應的,在Python3.x中會使用import.urllib.request,urllib.error

         在Python2.x中使用import.urllib -----------對應的,在Python3.x中會使用import.urllib.request,urllib.error,urllib.parse

         在Python2.x中使用import.urlparse -----------對應的,在Python3.x中會使用import.urllib.parse

         在Python2.x中使用import.urlopen-----------對應的,在Python3.x中會使用import.urllib.request.urlopen

         在Python2.x中使用import.urlencode-----------對應的,在Python3.x中會使用import.parse.urlencode

         在Python2.x中使用import.quote -----------對應的,在Python3.x中會使用import.urllib.request.quote

         在Python2.x中使用cookielib.CookieJar -----------對應的,在Python3.x中會使用http.CookieJar

         在Python2.x中使用urllib2.Request -----------對應的,在Python3.x中會使用urllib.request.Request

以上,總結了Urllib相關模組中從Python2.x到python3.x的常見的一些變動,如果之前用的是python2.x版本的,依據這個變動關係,可以快速寫出Python3.x的程式.

 

簡單使用urllib方法:   

 import urllib.request   #如果使用urllib方法,先匯入urllib.request

file = urllib.request.urlopen(‘http://www.baidu.com’) #需要使用urllib.request.urlopen開啟並爬取一個網頁

html = file.read()   #讀取全部內容

html = file.readline()#讀取一行內容

  

注:讀取內容常見的有3種方法:   

1>  file.read()讀取檔案的全部內容,與readlines不同的屙屎,read會把讀取到的內容賦予一個字串變數

2>  flie.readlines()  讀取檔案的全部內容,與read不同的是,readlines會把讀取到的內容賦給一個列表變數,若要讀取全部內容,推薦使用這種方式。

3> Flie.readline() 讀取檔案的一行內容

我們可以使用urllib.request 裡面的urlretrieve()函式直接將對應資訊寫入本地檔案,

格式為:urllib。reqeuest。urlretrieve(url,filename=本地檔案地址)  

注:使用urlretrieve儲存,在執行過程中,會產生一些快取,如果想清除這些快取資訊,可以使用urlcleanup()進行清除,輸入一下程式碼即可清除urlretrieve執行所造成的快取:         

urllib.request.urlcleanup()

獲取狀態碼:

file.gecode()   如果返回是200說明此響應正確
file.geturl()   獲取當前爬取url地址

 如果,url輸入中文或者不符合標準的字元,需要編碼:

urllib.request.quote(‘http://www.baidu.com’)
返回:
‘http%3A//www.baidu.com’


那麼響應的,需要解碼,使用:
urllib.request.unquote(‘http%3A//www.baidu.com’)
返回:
‘http://www.baidu.com’

如何使用代理伺服器:


def use_proxy(proxy_addr,url):
    import uellib.request
    proxy = urllib.request.ProxyHandler({'http':proxy_addr})
    opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data = urllib.reqeuet.urlopen(url).read().decode('utf-8')
    return data
proxy_addr ='202.7.210.22:5555'  #輸入有效ip
data = use_proxy(proxy_addr,'http://www.baidu.com')
print(len(data))