日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫学习笔记(三)—— requests库

發布時間:2025/3/21 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫学习笔记(三)—— requests库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Requests 是用Python語言編寫,基于 urllib,采用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 HTTP 測試需求。Requests 的哲學是以 PEP 20 的習語為中心開發的,所以它比 urllib 更加 Pythoner。更重要的一點是它支持 Python3 。requests目前基本上完全滿足web請求的所有需求,requests庫常用的方法有:get、post、put、delete、head、options

一、安裝

通過pip安裝(注意這里的requests記得加s)

pip install requests

二、發送請求

使用 Requests 發送網絡請求非常簡單。導包,之后添加方法進行發起請求的方法變得簡單,我們只需要著重關注一下發起請求的參數 ,10個重要的參數。

def request(url,params=None, headers=None, cookies=None,timeout=None,allow_redirects=True, proxies=None,verify=None, data=None,json=None):pass

params:字典或者字節序列,作為參數增加到url中

headers:添加請求頭,在進行爬蟲時添加headers很有必要,如果不添加,很可能把你禁掉

cookies: 字典或CookieJar對象

timeout:設置的超時時間,秒為單位

proxies:字典類型,設定訪問代理服務器,可以增加登錄認證
(注意:設置的代理ip必須是能用的,有需要的建議網上購買)

import requests test_url="http://httpbin.org/get"#測試url params={"name1":"spider","name2":"爬蟲"}#請求參數 #請求頭 headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} cookies={"sessionid":"hashcode","userid":"987654321",} proxies={"http":"218.104.130.52:8888"}#示例代理ip res=requests.get(test_url,params=params,headers=headers,cookies=cookies,timeout=10,proxies=proxies) print(res.text)結果: {"args": {"name1": "spider", "name2": "\u722c\u866b"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Cookie": "sessionid=hashcode; userid=987654321", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-60ea9b49-36fe6883718b9967412bd9cc"}, "origin": "218.104.130.52", "url": "http://httpbin.org/get?name1=spider&name2=\u722c\u866b" }

allow_redirects: 值為True/False,默認為True, 重定向開關
很多網站是http開頭,為了不影響老客戶,原網站不懂,當訪問http的原網址時,重定向到新的https網址,在requests中 allow_redirects默認是True,如果是False則不允許重定向,也就無法重定向新網址獲取數據。

import requests url="http://github.com" res_gh=requests.get(url,allow_redirects=False) print(res_gh.text) print(res_gh.status_code)結果: 空 301

verify:值為True/False,默認為True, 忽略證書驗證
(我們訪問的網址出現不安全時,這時就會出現關于SSL的報錯,verify設置false就可以爬取了)

import requests requests.urllib3.disable_warnings()#忽略warnning url="https://inv-veri.chinatax.gov.cn/index.html" res_ca=requests.get(url,verify=False) res_ca.encoding="utf-8" print(res_ca.text)

Json:JSON格式的數據,作為requests的內容
POST請求發送Json數據:

import requests json={"json_style":"json-data"}#json test_url="http://httpbin.org/post"#測試url res=requests.post(test_url,json=json) res.encoding="utf-8"#指定 字符串輸出編碼格式 print(res.text)#直接轉換成字符串 非字節碼結果: {"args": {}, "data": "{\"json_style\": \"json-data\"}", "files": {}, "form": {}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "27", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.1", "X-Amzn-Trace-Id": "Root=1-60ea9d83-0a3d189a0f8e108e40e1caad"}, "json": {"json_style": "json-data"}, "origin": "218.104.130.52", "url": "http://httpbin.org/post" }

data: 是第二個控制參數,向服務器提交數據
POST請求發送Form表單數據:

import requests data={"data1":"spider","data2":"123456"}#form 表單數據 有data json為null test_url="http://httpbin.org/post"#測試url res=requests.post(test_url,data=data) print(res.text)結果: {"args": {}, "data": "", "files": {}, "form": {"data1": "spider", "data2": "123456"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "25", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.1", "X-Amzn-Trace-Id": "Root=1-60ea9ddc-66f1567b16aa914a69764c3d"}, "json": null, "origin": "218.104.130.52", "url": "http://httpbin.org/post" }

注意:json 和 data 不可以同時添加,同時添加會造成json中沒有數據


三、response對象

常用屬性:

import requests test_url="http://httpbin.org/get"#測試url res=requests.get(url=test_url) print(res.text)#直接轉換成字符串 非字節碼 print(res.content)#圖片數據 使用此參數 print(res.status_code)#狀態碼 print(res.json()["headers"]["User-Agent"])#自動轉換成 字典格式 print(res.headers)#響應頭 print(res.cookies)#響應cookie print(res.url)#請求的url print(res.request.url)#請求的url print(res.request.headers)#請求頭

四、session方法

session方法是requests庫發起請求的一種方法,這種方法會自動保存訪問頁面得到的cookie值,從而再次訪問的時候會自動攜帶cookie,使得操作cookie方便,不需要我們自己添加cookie了。常用于登錄;

requests與session發起請求對比

import requestsindex_url="http://www.baidu.com" headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} res=requests.get(index_url,headers=headers) print("請求頭信息********requests*******") print(res.request.headers)結果: 請求頭信息********requests******* {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'BAIDUID=835160CB3530E3CFD5EB427D5E848CD0:FG=1; BIDUPSID=835160CB3530E3CF266788D53A9B383D; PSTM=1626055033; BD_LAST_QID=17570873450330636283'} #session的使用 index_url="http://www.baidu.com" headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} session=requests.session()#創建session對象 session.headers=headers#添加請求頭 res_ss=session.get(index_url) print("請求頭信息********session*******") print(res_ss.request.headers)結果: 請求頭信息********session******* {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'Cookie': 'BAIDUID=11D1727367960A85924002C72FF29721:FG=1; BIDUPSID=11D1727367960A851936876B050ED76B; PSTM=1626055034; BD_LAST_QID=14539128174352067748'}

總結

以上是生活随笔為你收集整理的爬虫学习笔记(三)—— requests库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。