urllib模組使用筆記

2021-08-10 14:50:26 字數 4087 閱讀 8878

文中所有python**均使用的是python2.7實現,與python3並不相容。

urllib模組是適用於乙個簡單的網路資料獲取和處理(不能處理有關驗證和cookie等功能),官方文件的介紹主要是給了兩個文件鏈結和三個標準:

- 基本網路名詞的介紹和格式定義規則

urllib 網頁抓取

urllib模組主要的功能就是提供了乙個對www協議訪問的介面urlopen(),讓我們可以直接通過url對網頁進行讀取,操作比較簡單,可以如同操作檔案一樣讀取檔案,但也僅限讀取,操作相對還是比較簡單.

如下,為乙個簡單的使用urllib模組對網頁訪問的操作:

import sys,urllib

defaccessbyurllib

():print

"access html by urllib"

url=""

page=urllib.urlopen(url)

#print "page html:%s" % page.read() #返回html檔案內容

print

"\npage info:%s " % page.info() #返回基本資訊(頭資訊)

print

"\npage code:%s"% page.getcode() #http請求響應碼,若非http則返回none

print

"\npage url:%s"%page.geturl() #請求url,真實訪問url(重定問情況下和url不相同)

print

"\npage headers: %s"%page.headers #返回頭資訊

#將html寫入本地,兩種方法

url_file=open("./test.html",'wb+')

url_file.write(page.read())

url_file.close()

#使用urllib模組直接寫入

urllib.urlretrieve(url,"./test2.html")

if __name__ == "__main__":

accessbyurllib()

如下為返回資料(由於html檔案內容較多,所以將其遮蔽):

8process finished with exit code 0urllib其他用法

如上,為urllib 中的基本對網頁的處理,如下介紹一些簡單的請求處理以及url的處理操作

請求方式

預設的urllib採用get方式進行請求操作,如下介紹如何指定請求方式:

def

requestmethod

(method="get"):

''' 預設的urllib是以get方式進行請求,可以通過使用urlencode()方法對其實現post請求,傳入資料為類字典型別,key:vaule格式,但

:param method: 指定請求方式:get,post

:return:

'''url=""

if method:

if method=="get":

page=urllib.urlopen(url)

print

"get request return:%s"%page.read()

elif method=="post":

reload(sys)

sys.setdefaultencoding('utf-8') #解決 'ascii' codec can't encode characters問題,注意需要在呼叫setdefaultencoding()之前先reload(sys)不然會丟擲沒有該方法.

params=urllib.urlencode(dic)

page=urllib.urlopen("%s?%s"%(url,params))

print

"post request return:%s" %page.read()

else:

raise exception("pass param format error.")

else:

raise exception("param must not be empty.")

如上為方法的基本使用.

url和路徑轉化

def

transferurl

():'''

url 和本地路徑轉化

:return:

'''path = "d://python/test/tt.txt"

url=urllib.pathname2url(pathname=path)

print

"path transfer to url:%s" % url

print

"url transfer to path:%s" %urllib.url2pathname(url)

字串的編譯碼

def encodestr():

''' 字串的編碼和解碼

:return:

''' quote_s=urllib.quote(s)

quote_plus_s=urllib.quote_plus(s)

unquote_s=urllib.unquote(quote_s)

unquote_plus_s=urllib.unquote_plus(quote_plus_s)

#encode

print

"quote encode:%s"

%quote_s

print

"quote plus encode:%s"

%quote_plus_s

#decode

print

"quote decode:%s" % unquote_s

print

"quote plus decode:%s" % unquote_plus_s

#執行結果如下:

quote encode:%e9

%a3%9e

%e4%ba

%91%e4

%b8%8d

%e5%9c

%a8%e7

%ba%bf

%25%25_345

%26quote plus encode:%e9

%a3%9e

%e4%ba

%91%e4

%b8%8d

%e5%9c

%a8%e7

%ba%bf

%25%25_345

%26

enjoytoday,enjoycoding

python CSV模組使用筆記

import csv csv.reader reader csvfile dialect excel fmtparam reader csv.reader file glucosedata.csv rb forline in reader print line l490 l660 l730 l850...

Glob模組使用筆記

python中的glob模組用於查詢檔案目錄和檔案,並返回乙個list。常用的方法有glob.glob 和glob.iglob 與os.listdir 都是查詢檔案,但有區別。glob模組支援 這三種萬用字元。import glob listdir glob.glob 1 9 py 在當前目錄下找到...

urllib模組的使用

urllib.request.urlopen url,data none,timeout,cafile none,capath none,cadefault false,context none 直接用urllib.request模組的urlopen 獲取頁面,page的資料資料格式為bytes型別...