python的urllib學習

2022-08-05 17:54:14 字數 2579 閱讀 7312

-         url:  需要開啟的**

-         data:post提交的資料

直接用urllib.request模組的urlopen()獲取頁面,page的資料格式為bytes型別,需要decode()解碼,轉換成str型別。

1 from urllib import request

2 response = request.urlopen(r'') # httpresponse型別

3 page = response.read()

4 page = page.decode('utf-8')

urlopen返回物件提供方法:

-         read() , readline() ,readlines() , fileno() , close() :對httpresponse型別資料進行操作

-         info():返回httpmessage物件,表示遠端伺服器返回的頭資訊

-         geturl():返回請求的url

使用request()來包裝請求,再通過urlopen()獲取頁面。

1 url = r''

2 headers =

8 req = request.request(url, headers=headers)

9 page = request.urlopen(req).read()

10 page = page.decode('utf-8')

用來包裝頭部的資料:

-         user-agent :這個頭部可以攜帶如下幾條資訊:瀏覽器名和版本號、作業系統名和版本號、預設語言

-         connection:表示連線狀態,記錄session的狀態。

urlopen()的data引數預設為none,當data引數不為空的時候,urlopen()提交方式為post。

1 from urllib import request, parse

2 url = r''

3 headers =

9 data =

14 data = parse.urlencode(data).encode('utf-8')

15 req = request.request(url, headers=headers, data=data)

16 page = request.urlopen(req).read()

17 page = page.decode('utf-8')

urlencode()主要作用就是將url附上要提交的資料。 

1 data = 

6 data = parse.urlencode(data).encode('utf-8')

經過urlencode()轉換後的data資料為?first=true?pn=1?kd=python,最後提交的url為

first=true?pn=1?kd=python

post的資料必須是bytes或者iterable of bytes,不能是str,因此需要進行encode()編碼

1 page = request.urlopen(req, data=data).read()
當然,也可以把data的資料封裝在urlopen()引數中

1 def get_page(url):

2 headers =

8 data =

13 data = parse.urlencode(data).encode('utf-8')

14 req = request.request(url, headers=headers)

15 try:

16 page = request.urlopen(req, data=data).read()

17 page = page.decode('utf-8')

18 except error.httperror as e:

19 print(e.code())

20 print(e.read().decode('utf-8'))

21 return page

當需要抓取的**設定了訪問限制,這時就需要用到**來抓取資料。

1 data = 

6 proxy = request.proxyhandler() # 設定proxy

7 opener = request.build_opener(proxy) # 掛載opener

8 request.install_opener(opener) # 安裝opener

9 data = parse.urlencode(data).encode('utf-8')

10 page = opener.open(url, data).read()

11 page = page.decode('utf-8')

12 return page

python的urllib庫

最簡單的urllib2開啟一個網頁 import urllib2 response urllib2 urlopen html respons...

python urllib2 urllib實現

urllib2和urllib是python中的兩個內建模組,要實現http功能 實現方式是以urllib2為主 urllib為輔 urllib2提供一個基礎函式urlopen 通過向指定的url發出請求來獲取資料。最簡單的形式是 get 請求 import urllib2 import cookie...

python urllib應用

爬取網頁 read 讀取內容 read readline readlines fileno close 這些方法的使用方式與檔案物件完全一樣...