文中所有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型別...