Python3學習筆記(urllib模組的使用)

2021-10-25 08:41:55 字數 3326 閱讀 8459

1.urllib

urllib.request.urlopen(url, data=none, [timeout, ]*, cafile=none, capath=none, cadefault=false, context=none)

-         url:  需要開啟的**

-         data:post提交的資料

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

1 from urllib import request

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

4 page = response.read()

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

urlopen返回物件提供方法:

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

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

-         geturl():返回請求的url

2.request

urllib.request.request(url, data=none, headers={}, method=none)

使用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的狀態。

3.post資料

urllib.request.urlopen(url, data=none, [timeout, ]*, cafile=none, capath=none, cadefault=false, context=none)

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')

urllib.parse.urlencode(query, doseq=false, safe='', encoding=none, errors=none)

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()引數中

5、使用**

urllib.request.proxyhandler(proxies=none)

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

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爬蟲

Python3學習筆記

最近在起步學python,聚合一下這個過程中蒐集的資源和對一些基本知識做個小總結,語法基於python3,方便以後查詢。python官方文件 不錯的基礎課程 基本語法 演算法 建模 練習 以下是整理常用可能遺忘的基礎點 python3中的輸入是input 獲得使用者輸入的字串 a input ple...

python3學習筆記

redis訊息佇列的使用 coding utf 8 created on tue mar 26 15 58 34 2019 author admin import redis class redisqueue object def init self,name,namespace queue red...

python3 學習筆記

python3學習筆記 python基礎 輸出 print 括號中加上想要輸出的資料,就可以將指定內容輸出至螢幕。1.輸出的時候要注意資料型別。字串,整數等等 2.括號中可以包含多個字串,使用逗號隔開就可以了。但是每次輸出遇到這個連線逗號的時候都會輸出乙個空格。3.括號中的內容也可以是變數名和計算公...