python康復日記-request庫的使用,爬蟲自動化測試

一,request的簡單應用

#1請求地址
URL='https://example.com/login'
#2參數表單
form_data = {'username': 'admin','password': 'secret'
}
#3返回的響應對象response
response = requests.post(URL,data=form_data,timeout=5
)
#4處理返回結果,這里直接打印返回網頁的正文。通常需要json轉化,和encode編碼下
print(reponse.content)

1,請求頭需要設置,有些網站會限制訪問

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36','Referer': 'https://www.99csw.com/','Accept-Language': 'zh-CN,zh;q=0.9'}try:# 發送HTTP請求response = requests.get(url, headers=headers, timeout=15)

2,response的屬性

發送request請求后,返回的reponse對象里有我們要的信息,需要處理。常用的3個標粗了。

屬性/方法類型/返回類型說明
status_codeintHTTP 狀態碼(如 200、404、500)
headersCaseInsensitiveDict響應頭字典(不區分大小寫)
textstr解碼后的文本內容(自動根據?encoding?解碼)
contentbytes原始字節內容(未解碼的二進制數據)
json()dict/list解析 JSON 響應內容(非 JSON 內容會拋異常)
urlstr最終請求的 URL(含重定向后的地址)
encodingstr響應內容的編碼格式(可手動修改)
apparent_encodingstr通過內容分析出的編碼格式(自動檢測)
rawHTTPResponse原始響應流對象(需配合?stream=True?使用)
cookiesRequestsCookieJar服務器返回的 Cookies
elapseddatetime.timedelta請求耗時(從發送到響應完成的時間)
historylist[Response]重定向歷史記錄列表
reasonstr狀態碼的文本描述(如 200 → "OK",404 → "Not Found")
requestPreparedRequest關聯的請求對象(含請求頭、方法、URL 等信息)

rep = reponse.content.decode('utf8'),content獲取的正文是二進制,注意編碼。

正文處理通常需要 json格式化 和 re正則模塊 的匹配。

#對返回content正文中,span標簽的獲取,標題內容獲取
pattern1 = re.compile(r'<span class="title">([^&]*?)</span>')
titles = pattern1.findall(resp.text)

3,session會話保持,處理cookie,保持會話。

Session 對象存儲特定用戶會話所需的屬性及配置信息。可以帶上cookie含帳號密碼。

成功登陸之后,直接獲取返回響應的cookie

def login():login_url = 'http://www.xxx.com/login'headers = {"Accept": "application/json, text/javascript, */*; q=0.01"}body = {"usercode": "liuzz05@****.com","password": "123456"}try:res = requests.post(url=login_url, headers=headers, data=body)cookies = res.cookiescookie = requests.utils.dict_from_cookiejar(cookies)return cookieexcept Exception as err:print('獲取cookie失敗:\n{0}'.format(err))

如果沒有,先登錄,從瀏覽器工具欄取cookie,找信息。

F12檢查請求。cookie里有大串字母,password,token等字樣說明這個可能是帶密碼賬號的cookie,要具體情況定。

直接使用cookie,或者把cookie放在header參數中,依據具體網站請求頭格式而定

把cookie轉化為字典格式,手動扣cookie的鍵值對。本地文件寫入分析,拼接

def get_data():cookie = login()res = requests.get(url=get_data_url, cookies=cookie)print(res.text)

def get_data():cookie = login()headers = {"cookie": cookie}res = requests.get(url=get_data_url, headers=headers)print(res.text)

一個完整的登錄案例。

def auto_login():s = requests.Session()r = s.get(login_url)bs = BeautifulSoup(r.text,'html.parser')image = bs.find("img", {"id": "vcJpeg"})['src']lt_data = bs.find("input", {"name": "lt"})['value']csr_data = bs.find("input", {"name": "csrftoken"})['value']sec_data = bs.find("input", {"name": "sec"})['value']#print(lt_data,",",csr_data,",",sec_data)rootdir="http://172.16.5.12:10086"ir = s.get(rootdir+image)if ir.status_code == 200:with open('valid.jpg', 'wb') as f:f.write(ir.content);f.close();validateCode = get_code(Image.open('valid.jpg'))  # 通過本地圖片解析驗證碼print(validateCode)postdata={'csrftoken': csr_data,'username': uosp_username,'password': base64.b64encode(uosp_passwd.encode('utf-8')),'institute': '00010000','validateCode': validateCode,'lt': lt_data,'sec': sec_data,'dn': '','ip': '144.4.44.44','_eventId':'submit',}print(postdata)form_data={"action":"GetINCInfoByID","id":"INC000287932",}s.post(login_url,data = postdata)s.post(incident_url,data = form_data)s.post(servicelogin_url)cookies_dict = requests.utils.dict_from_cookiejar(s.cookies)  # 登錄后頁面的cookie轉化為dict#print("cookies is that ",cookies_dict)if ('.ASPXUSERDEMO' in  cookies_dict):  # 如果登錄成功,cookie中會有.ASPXUSERDEMO字段值cookies = open('login_cookies', 'w')cookies.write(str(cookies_dict))  # 將cookie信息寫入本地文件,其他模塊直接訪問文件可以繞過登錄cookies.close()return selse:return None

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73610.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73610.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73610.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

強化學習和智能決策:Q-Learning和Deep Q-Learning算法

強化學習(Reinforcement Learning, RL)是機器學習的一個重要分支,它通過智能體(Agent)與環境交互來學習最優決策策略,旨在最大化智能體的長期累積獎勵。Q-Learning和Deep Q-Learning是強化學習中的兩種關鍵算法,它們在智能決策領域發揮著重要作用。 一、強化學習基礎 …

ubuntu22.04 安裝Jitsi meet 開源會議系統,代替騰訊會議

0.安裝 官方安裝教程Self-Hosting Guide - Debian/Ubuntu server | Jitsi Meet 一定要用域名訪問&#xff0c; 一定要用域名訪問&#xff0c; 一定要用域名訪問&#xff0c; 一定要用域名訪問&#xff0c; 域名一定要有ssl證書&#xff0c;域名一定要有ssl證書&#xff0c;域名…

專家管理系統(源碼+文檔+講解+演示)

引言 在知識經濟時代&#xff0c;專家管理系統成為了企業優化知識資源、提升決策效率的重要工具。本文將介紹一款創新的專家管理系統&#xff0c;該系統通過智能化工具&#xff0c;助力企業實現專家資源的高效管理和利用。 平臺概述 專家管理系統采用前后端分離的架構設計&a…

css基礎-選擇器

選擇器進階 子串選擇器 /* 匹配 href 以 "https" 開頭的鏈接 */ a[href^"https"] {color: green; }/* 匹配 href 包含 "example" 的鏈接 */ a[href*"example"] {text-decoration: underline; }/* 匹配 href 以 ".pdf" 結尾…

Spring Boot屬性設置方法及優先級完整說明+表格對比

Spring Boot屬性設置方法及優先級完整說明 官網參考&#xff1a; https://docs.spring.io/spring-boot/3.4-SNAPSHOT/reference/features/external-config.html#features.external-config.files 屬性設置方法優先級順序&#xff08;從高到低&#xff09; 命令行參數&#xf…

上門家政小程序實戰,從0到1解決方案

一、邏輯分析 上門家政小程序主要涉及用戶端和服務端兩大部分。用戶端需要實現服務瀏覽、預約下單、訂單跟蹤等功能&#xff1b;服務端則要處理訂單管理、服務人員管理、數據統計等任務。以下是詳細的功能模塊分析&#xff1a; 用戶注冊與登錄&#xff1a;用戶通過手機號或第三…

LLVM學習-DragonEgg工具

2.2.2 使用DragonEgg和LLVM工具了解編譯流程 如果希望看到前端的運行情況&#xff0c;請使用-S -fplugin-arg-dragonegg-emit-ir標志&#xff0c;該標志將產生以LLVM IR代碼表示的人工可讀文件。 一旦編譯器將程序轉換為IR則停止編譯&#xff0c;并將內存中的表示內容寫入磁盤的…

關于cmd中出現無法識別某某指令的問題

今天來解決以下這個比較常見的問題&#xff0c;安裝各種軟件都可能會發生&#xff0c;一般是安裝時沒勾選注冊環境變量&#xff0c;導致cmd無法識別該指令。例如mysql&#xff0c;git等&#xff0c;一般初學者可能不太清楚。 解決這類問題最主要的是了解環境變量的概念&#x…

ThreadLocal詳解與高頻場景實戰指南

ThreadLocal詳解與高頻場景實戰指南 1. ThreadLocal概述 ThreadLocal是Java提供的線程本地變量機制&#xff0c;用于實現線程級別的數據隔離。每個訪問該變量的線程都會獲得獨立的變量副本&#xff0c;適用于需要避免線程間共享數據的場景。 特點&#xff1a; 線程封閉性&a…

【C++初階】---類和對象(上)

1.類的定義 1.1類的定義格式 ? class為定義類的關鍵字&#xff0c;Data為類的名字&#xff0c;{}中為類的主體&#xff0c;注意類定義結束時后?分號不能省略。類體中內容稱為類的成員&#xff1a;類中的變量稱為類的屬性或成員變量;類中的函數稱為類的?法或者成員函數。 ?…

Rust安裝并配置配置vscode編譯器

一. 下載rustup-init.exe rust下載網址&#xff1a;Getting started - Rust Programming Language 根據系統&#xff0c;選擇適合的exe文件 我選擇的的是右邊64bit的 打開下載的文件 輸入1&#xff0c;回車 二. Visual C 安裝 自動下載安裝vs 等待安裝完畢 三. Rust 安裝…

openGl片段著色器的含義

片段著色器的含義及代碼中的應用說明&#xff1a; 1. 片段著色器的基本概念 片段著色器&#xff08;Fragment Shader&#xff09;是OpenGL著色器管線中的關鍵組件&#xff0c;主要用于計算屏幕空間中每個片段&#xff08;對應像素&#xff09;的最終顏色。它是圖形渲染流程的…

事務的四大特性(ACID)詳解

事務的四大特性&#xff08;ACID&#xff09;詳解 在數據庫管理系統&#xff08;如 MySQL&#xff09;中&#xff0c;事務&#xff08;Transaction&#xff09; 是指一組要么全部執行、要么全部不執行的數據庫操作&#xff0c;通常用于確保數據的完整性和一致性。事務有四大核…

ubuntu設置開機自動運行應用

系統版本&#xff1a;Ubuntu 24.04.1 LTS桌面版 按招網上的資料顯示&#xff0c;當前版本主要的實現方式有以下兩種&#xff0c; 方式1&#xff1a;通過圖形界面的【啟動應用程序】設置開機自啟動&#xff1b;方式2&#xff1a;配置為服務實現開機自啟動。 但是在我的電腦上方…

ECharts各類炫酷圖表/3D柱形圖

一、前言 最近雞米花實現了各類的炫酷的圖表&#xff0c;有3D柱形圖、雙邊柱形圖以及異形柱形圖&#xff0c;好了&#xff0c;直接上圖&#xff1a; 二、效果圖 一個個來吧&#xff0c;下面就是代碼啦&#xff0c;注意&#xff0c;一下圖表展示的寬高均為800px*300px 三、異形橫…

機器人原點丟失后找回原點的解決方案與步驟

機器人原點丟失后找回原點的解決方案與步驟 在機器人運行過程中&#xff0c;原點丟失可能導致定位錯誤、運動失控等問題&#xff0c;常見于機械臂、AGV&#xff08;自動導引車&#xff09;、3D打印機等設備。以下是針對原點丟失問題的系統性解決方案及詳細步驟&#xff0c;涵蓋…

HCIP——園區網、VLAN

園區網 園區網搭建核心思路&#xff1a;冗余&#xff08;備份&#xff09;--- 保證其健壯性 1、設備冗余 2、線路冗余 3、網關冗余 4、ups&#xff08;不間斷電源&#xff09;冗余—— 能不斷電&#xff08;物理層&#xff09; 三層交換機和路由器的選擇&#xff1a; 三層交換…

虛擬機(二):Android 篇

虛擬機&#xff08;一&#xff09;&#xff1a;Java 篇 虛擬機&#xff08;二&#xff09;&#xff1a;Android 篇 Dalvik和JVM區別 Dalvik 基于寄存器&#xff0c;而 JVM 基于棧。 基于棧的架構具有更好的可移植性&#xff0c;因為其實現不依賴于物理寄存器基于棧的架構通常指…

Android Token的原理和本地安全存儲

Android Token的原理和本地安全存儲 前言 在移動應用開發中,Token是實現用戶身份驗證和授權的重要機制。本文將深入介紹Token的原理,以及在Android平臺上如何安全地存儲Token,幫助開發者構建可靠的身份驗證系統。 基礎知識 1. Token概述 1.1 Token的作用 身份驗證授權訪…

Vue Kubernetes項目 局部布局 下拉菜單

下拉菜單 [el-dropdown] 下拉菜單也比較簡單&#xff0c;就是類似于按鈕下面來一個下拉菜單。 示例Demo如下&#xff1a; <template><el-dropdown><span class"el-dropdown-link">下拉菜單<i class"el-icon-arrow-down el-icon--right&q…