requests庫
Requests 是一個 Python 的 HTTP 客戶端庫, 支持許多 HTTP 特性,可以非常方便地進行網頁請求、網頁分析和處理網頁資源,擁有許多強大的功能,
本文主要介紹 requests 庫的基礎使用,
1. 安裝與匯入
安裝requests庫:快捷鍵 Windows+r 打開運行控制框,輸入 cmd,進入命令列,輸入:
pip install requests
匯入:
import requests
2. 主要方法
七個主要方法:
| 方法 | 描述 |
|---|---|
| requests.request | 發送請求,支撐以下各方法 |
| requests.get | 向網頁發送get請求,獲取網頁資訊(GET) |
| requests.post | 向網頁發送post請求(POST) |
| requests.put | 向網頁發送put請求(PUT) |
| requests.head | 獲取網頁請求頭資訊(HEAD) |
| requests.patch | 向網頁提交區域修改請求(PATCH) |
| requests.delete | 向網頁提交洗掉請求(DELETE) |
| requests.Session | 會話,相比于直接requests請求,具有保持功能 |
3. 主要的使用方法
3.1 requests.request(method, url, **kwargs)
-
method 設定請求方式(get、post、put、head、patch、delete)
-
url 設定請求地址
-
kwargs 控制訪問引數
request 方法中各方法的引數與以下相應的方法相同,
3.2 requests.get(url, params=None, **kwargs)
- url 設定請求地址,一般地址中問號后面的可以省略,問號后面的即是請求引數,
- params 設定發送請求時所帶的引數,字典或位元組流格式,作為額外引數連接到url中(問號后的部分),可選
- kwargs 控制訪問引數,見 kwargs引數表,可選
發送請求:
url = 'https://blog.csdn.net/weixin_52132159' # 我的博客主頁
#url = 'https://blog.csdn.net/weixin_52132159?spm=1019.2139.3001.5343'
headers = {
'cookie': '...',
'Referer': '...'
}
params = {'spm': '1019.2139.3001.5343'}
response = requests.get(url, headers=headers, params=params) # 發送請求
3.3 requests.post(url, data=None, json=None, **kwargs)
- url 設定請求地址
- data 為字典、位元組序列或檔案物件,作為請求的內容,向服務器提交資源時使用,可選
- json 為 JSON格式的資料,作為內容向服務器提交,可選
- kwargs 控制訪問引數,見 kwargs引數表,可選
發送請求:
url = 'https://fanyi.so.com/index/search' # 360翻譯
headers = {
'pro': 'fanyi'
}
data = {
'eng': 0, # 是否從英文轉中文
'query': '你好' # 翻譯的單詞
}
response = requests.post(url, headers=headers, data=data) # 發送請求
3.4 requests.Session
Session 方法可以實作回話,持續性地發送requests請求,能夠跨請求保持cookie,
經實體化后,可用 get、post 等方法發送請求,用法不變,
示例:
response = requests.Session()
response.post('https://fanyi.so.com/index/search')
response.get('https://blog.csdn.net/weixin_52132159')
3.4 其他
- requests.put(url, data=None, **kwargs)
- requests.head(url, **kwargs)
- requests.patch(url, data=None, **kwargs)
- requests.delete(url, **kwargs)
其他的方法使用程序與 get 與 post 類似,都有著kwargs引數表 中的引數,依實際情況選擇使用,
5. post 與 get 方法
接下來我們要說說 http 請求中 post 和 get 方式的異同,
post 方法,就是在你進入一個網頁后,你發送的新的請求以進行一些操作,post 方法需要兩個重要的引數 url 和 data,url 表示要發送請求的網址,data 則是提交的資料和資訊,網頁根據新得到的資訊,再渲染加載出新的頁面,比如爬取360翻譯,在進入翻譯界面后,通過填寫翻譯內容、點擊翻譯按鈕,網頁回傳翻譯的結果,這就是 post 請求,
get 方法,一般是直接通過發送請求,來獲取網頁資訊,比如,直接通過 get 方法獲取網頁上的豆瓣電影排行榜等,當然,也有時候 get 方法使用的情況和 post 方法相似,如用get方法搜索酷我音樂,這時候就要看網頁所規定的請求方式來選擇了,
4. kwargs 引數表
| 引數 | 說明 |
|---|---|
| params | 送請求時所帶的引數,字典或位元組流格式,作為額外引數連接到url中 |
| data | 字典、位元組序列或檔案物件,作為requests的內容,向服務器提交資源時使用 |
| json | JSON格式的資料,作為內容向服務器提交 |
| headers | 字典型別,請求頭 |
| cookies | 字典或 CookieJar 物件,從HTTP協議中決議 cookie,字典形式的 cookie 也可放入 headers中 |
| auth | 元組型別,支持HTTP認證功能 |
| files | 字典型別,向服務器傳輸檔案時使用 |
| timeout | 設定等待回應的時間,單位為秒 |
| proxies | 字典型別,設定訪問代理服務器 |
| allow_redirects | 布爾型別,默認為True,重定向開關 |
| stream | 布爾型別,默認為True,判斷是否對獲取內容立即下載 |
| verify | 布爾型別,默認為True,認證SSL證書的開關 |
| cert | 保存本地SSL證書路徑的欄位 |
參考文章:https://blog.csdn.net/qq_43406976/article/details/104538316
5. 回應內容
發送請求后,回傳的是一個 response 物件,我們可以通過該物件的屬性和方法獲取回傳內容,
| 方法或屬性 | 說明 |
|---|---|
| response.url | 回傳請求的URL |
| response.text | 回傳headers中的編碼決議的結果,可以通過r.encoding='gbk’來變更解碼方式 |
| response.content | 回傳二進制結果 |
| response.status_code | 回傳回應碼,如200、404等 |
| response.headers | 回傳請求頭 |
| response.cookies | 回傳一個RequestsCookieJar物件 |
| response.history | 回傳以串列存盤的請求歷史記錄 |
| response.json() | 回傳回傳結果經json解碼后的內容,一般回傳一個字典(這是個方法,要帶括號) |
6. 使用格式示例
6.1 爬取360翻譯(POST)
url = 'https://fanyi.so.com/index/search'
headers = {
'pro': 'fanyi',
}
data = {
'eng': 1,
'query': 'hello'
}
r = requests.post(url, data=data, headers=headers)
print(r.url)
print(r.status_code)
print(r.json()['data']['fanyi'])
輸出:
https://fanyi.so.com/index/search
200
你好
6.2 爬取圖片/視頻
import requests
pic = requests.get('https://profile.csdnimg.cn/E/5/9/3_weixin_52132159').content
with open ('作者頭像.jpg','wb') as i:
i.write(pic)
更多爬蟲的教學和案例可以見作者的專欄:Python爬蟲
– the End –
這篇文章就到這里了,點個贊支持一下吧!
本文收錄于專欄:Python爬蟲
關注作者,持續閱讀作者的文章,學習更多Python知識!
https://blog.csdn.net/weixin_52132159
2021/8/6
已完成的爬蟲教程:
- Python爬蟲從0到1 | 入門實戰:360翻譯 ——requests庫之POST方法
- Python爬蟲從0到1 | 爬取酷我音樂資訊并下載 ——requests庫之GET方法
推薦閱讀
- Python爬蟲 | 爬取b站北京奧運會開幕式彈幕,有多少人從東京奧運會跑過來的?
- 絕密!Python爬蟲告訴你刷分機器人背后的原理!這篇文章差點沒過審
- Python每天一道題:昆蟲繁殖問題?我把密密麻麻的幼蟲和成蟲搞定了
- 沒想到我連五年級的題目都解不出來?可不能被人小看,讓萬能的Python登場
- Python:程式猿怎么追女生?教你短短幾行代碼表白,告別表白尷尬!
- 想學Python不知從何入手?學習Python必備秘籍,附地址,速拿!
- Python標準庫:datetime 時間和日期模塊 —— 時間的獲取和操作詳解
- 學習筆記 | PyInstaller 使用教程——用pyinstaller打包exe應用程式【建議收藏!】
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/292351.html
標籤:python
