爬虫库分享(一):requests常见用法总结
一.前言
requests是Python中一個用來發(fā)出HTTP請求的庫,它將復(fù)雜的網(wǎng)絡(luò)請求封裝為一個簡單的API以供用戶調(diào)用,對于一般比較簡單的爬蟲程序而言,requests庫足矣,今天博主分享一下requests庫的常見用法,本文主要針對有志爬蟲的新人。
二.常見用法
2.1 安裝與引用
當(dāng)然,在使用前需要在Python環(huán)境中安裝requests庫:
pip install requests安裝完成后便可以通過import命令即可引用該庫:
import requests2.2 GET請求
HTTP最常見的請求包括GET和POST,這里先介紹前者。GET請求用來向服務(wù)器請求資源。通過GET請求,我們發(fā)送自定義HTTP請求頭給服務(wù)器,瀏覽器在發(fā)送GET請求時的HTTP請求頭一般包括Accept、Accept-Encoding、UserAgent等。
requests庫發(fā)送GET請求,只需要調(diào)用如下的API:
requests.get(url, params, headers, proxies, timeout, verify) # 參數(shù)說明 """ url: 請求的URL params: 字典\元組\列表,查詢字符串參數(shù),通過其可以向URL對應(yīng)的參數(shù)傳值,從而能夠?qū)?shù)據(jù)傳送給服務(wù)器,一般是URL?后面的內(nèi)容 headers: 請求頭,字典類型 (python程序偽裝成瀏覽器發(fā)送請求的關(guān)鍵) proxies: 字典,設(shè)置代理IP timeout: 數(shù)字,超時時間,單位為秒 verify: 布爾值True或者False,指示是否驗證服務(wù)器的TSL證書,默認(rèn)為True (爬蟲程序有時候需要將其關(guān)閉,否則驗證失敗,爬蟲終止) """2.2.1 Response對象
requests.get()函數(shù)將會返回服務(wù)器的響應(yīng)——requests.Response對象,該對象包含了請求的結(jié)果,其常用屬性/方法概括如下表:
| url | 響應(yīng)的URL |
| text | 響應(yīng)的內(nèi)容 (unicode碼) |
| json() | 如果響應(yīng)的結(jié)果是一個json對象,可以調(diào)用該方法,否則會報錯 |
| content | 返回響應(yīng)的內(nèi)容(字節(jié)的形式) |
| status_code | 響應(yīng)代碼,其中200表示響應(yīng)成功,404表示Not Found等等 |
2.2.2 GET請求示例
下面就以博主發(fā)的一篇文章使用NNI,從此告別手動調(diào)參作為例子,其對應(yīng)的URL為:
https://blog.csdn.net/qq_42103091/article/details/123287865?spm=1001.2014.3001.5502我們可以調(diào)用requests.get()方法來模擬瀏覽器請求該文章:
import requestsheaders = {"user-agent": "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36"} params = {"spm":"1001.2014.3001.5502"} url = "https://blog.csdn.net/qq_42103091/article/details/123287865"response = requests.get(url=url, params=params, headers=headers) # 響應(yīng)的URL print(response.url) # https://blog.csdn.net/qq_42103091/article/details/123287865?spm=1001.2014.3001.5502 # 狀態(tài)碼 print(response.status_code) # 200可以看到上述示例的請求URL中問號后面的字段便是作為查詢字符串參數(shù)的值而傳入get()函數(shù)的。
2.3 POST請求
倘若需要向服務(wù)器上傳數(shù)據(jù),一般采用POST請求。常見的應(yīng)用場景為提交HTML表單。發(fā)送給服務(wù)器的數(shù)據(jù)包含在POST請求的消息體 (request body)中,POST請求中的Content-Type用來指示請求正文的數(shù)據(jù)類型,而Content-Length則指示了請求中的數(shù)據(jù)長度。
requests庫發(fā)送POST請求,只需要調(diào)用如下的API:
requests.post(url, data, json, headers, proxies, timeout, vertify) # 參數(shù)說明 """ url: 請求的URL data: 發(fā)送給指定URL的字典、元組列表、字節(jié)或文件對象 json: 發(fā)送給指定URL的JSON對象 headers、proxies、timeout、vertify: 與get()方法同 """注:post方法在調(diào)用后也會返回一個requests.Response對象。
2.3.1 POST請求示例
為避免涉及具體網(wǎng)站,本次實踐采用了某網(wǎng)站提供的驗證POST請求網(wǎng)址:https://httpbin.org/forms/post,其界面表單截圖為:
填入數(shù)據(jù)后,點擊提交按鈕可以看到提交的請求,其界面截圖如下:
基于此,我們可以利用requests.post()方法來完成該操作:
import requests import jsonurl = "https://httpbin.org/post"data = {"comments": "加辣", "custemail": "119@163.com", "custname": "2333", "custtel": "119", "delivery": "17:30", "size": "large", "topping": "onion" }response = requests.post(url=url, data=data) print(response.status_code) # 200 with open("temp.json", "w", encoding="utf-8") as fp:json.dump(response.json(), fp, ensure_ascii=False)上述代碼實現(xiàn)了表單的提交,并將響應(yīng)的JSON對象保存到了本地。返回200說明提交表單成功,下面是其對應(yīng)返回的json數(shù)據(jù)截圖:
實際運營的網(wǎng)站大多數(shù)都比這要復(fù)雜,此時就要具體問題具體分析了。
四.結(jié)語
在完成本文的過程中,參考了很多非常好資源:
- HTTP GET Request Method
- How do I send an HTTP POST request?
以上便是本文的全部內(nèi)容,要是覺得不錯的話,可以點個贊或關(guān)注一下博主,你們的支持是博主進步的不竭動力,當(dāng)然要是有問題的話也敬請批評指正!!!
總結(jié)
以上是生活随笔為你收集整理的爬虫库分享(一):requests常见用法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps cs6导出html,Photosh
- 下一篇: 销售技巧学习(一)