python urllib模块
生活随笔
收集整理的這篇文章主要介紹了
python urllib模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
urllib模塊
- urllib.request模塊
- 版本介紹
- 常用方法
- 響應對象
- urllib.parse模塊
- 常用方法
- 請求方式
urllib.request模塊
版本介紹
- 在python3.0之前,通常為urllib2、urllib結合使用
- python3把urllib和urllib2合并成urllib.request
常用方法
- urllib.request.urlopen(url):向url發送請求并獲取響應
- 得到響應之后,response.read() -> 得到網頁內容,編碼為bytes
- 使用response.read().decode('utf-8')可以得到以字符串為編碼的網頁內容
- 代碼舉例import urllib.requesthtml = urllib.request.urlopen('https://818ps.com/muban/biaoqingbao.html?user_source=r416508&sdclkid=b52pALol15jpALAR&bd_vid=8269777356919846594') print(html.read().decode('utf-8'))
- 針對一些反爬機制,有時我們可能需要添加headers參數,但是urllib.request.urlopen()不能增加這個參數,所以需要用到urllib.request.Request()方法
- 步驟
- 1、創建請求對象
- 2、發送請求并獲取響應
- 3、打印網頁內容
- 代碼舉例import urllib.requesturl = 'https://www.baidu.com' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} # 1、創建請求對象 html = urllib.request.Request(url, headers=headers) # 2、響應對象 response = urllib.request.urlopen(html) # 3、獲取網頁內容 print(response.read().decode('utf-8'))
- 步驟
響應對象
- read() -> 讀取服務器響應的內容
- getcode() -> 返回HTTP的響應碼
- geturl() -> 返回實際數據的URL(防止重定向問題)
urllib.parse模塊
常用方法
- urllib.parse.urlencode(參數:字典) -> 將字符串轉換成形如%E6%9F%AF%E5%8D%97
- 代碼示例import urllib.request import urllib.parse# https://www.baidu.com/s?wd=%E6%9F%AF%E5%8D%97url = 'https://www.baidu.com/s?' name = input("請輸入要搜索的內容:") # 定義一個字典,與urllib.parse.urlencode的傳參形式一致 wd = {'wd': name} # 將漢字轉成形如%E6%9F%AF%E5%8D%97 wd = urllib.parse.urlencode(wd) # 拼接完整url url = url + wd headers = headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} # 創建請求對象 req = urllib.request.Request(url, headers=headers) # 發送請求并獲取響應 res = urllib.request.urlopen(req) # 獲取網頁內容 html = res.read().decode('utf-8') # 打印內容 print(html)
- urllib.parse.quote(參數:字符串) -> 將字符串轉換成形如%E6%9F%AF%E5%8D%97
- 代碼示例import urllib.parse# https://www.baidu.com/s?wd=%E6%9F%AF%E5%8D%97url = 'https://www.baidu.com/s?' name = input('請輸入你要搜索的內容:') name = urllib.parse.quote(name) # 拼接完整url url = url + name headers = headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} # 創建請求對象 req = urllib.request.Request(url, headers=headers) # 發送請求并獲取響應 res = urllib.request.urlopen(req) # 獲取網頁內容 html = res.read().decode('utf-8') # 打印內容 print(html)
請求方式
-
GET 特點 :查詢參數在URL地址中顯示
-
POST
- 在Request方法中添加data參數urllib.request.Request(url,data=data,headers=headers)
- data :表單數據以bytes類型提交,不能是str
總結
以上是生活随笔為你收集整理的python urllib模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 省市区API
- 下一篇: Python 爬虫QQ音乐