開源 python 應用 開發(六)網絡爬蟲

?最近有個項目需要做視覺自動化處理的工具,最后選用的軟件為python,剛好這個機會進行系統學習。短時間學習,需要快速開發,所以記錄要點步驟,防止忘記。

?

?鏈接:

開源 python 應用 開發(一)python、pip、pyAutogui、python opencv安裝-CSDN博客

開源 python 應用 開發(二)基于pyautogui、open cv 視覺識別的工具自動化-CSDN博客

開源 python 應用 開發(三)python語法介紹-CSDN博客

開源 python 應用 開發(四)python文件和系統綜合應用-CSDN博客

開源 python 應用 開發(五)python opencv之目標檢測-CSDN博客

開源 python 應用 開發(六)網絡爬蟲-CSDN博客

開源 python 應用 開發(七)數據可視化-CSDN博客

?推薦鏈接:

開源 Arkts 鴻蒙應用 開發(一)工程文件分析-CSDN博客

開源 Arkts 鴻蒙應用 開發(二)封裝庫.har制作和應用-CSDN博客

開源 Arkts 鴻蒙應用 開發(三)Arkts的介紹-CSDN博客

開源 Arkts 鴻蒙應用 開發(四)布局和常用控件-CSDN博客

開源 Arkts 鴻蒙應用 開發(五)控件組成和復雜控件-CSDN博客

?推薦鏈接:

開源 java android app 開發(一)開發環境的搭建-CSDN博客

開源 java android app 開發(二)工程文件結構-CSDN博客

開源 java android app 開發(三)GUI界面布局和常用組件-CSDN博客

開源 java android app 開發(四)GUI界面重要組件-CSDN博客

開源 java android app 開發(五)文件和數據庫存儲-CSDN博客

開源 java android app 開發(六)多媒體使用-CSDN博客

開源 java android app 開發(七)通訊之Tcp和Http-CSDN博客

開源 java android app 開發(八)通訊之Mqtt和Ble-CSDN博客

開源 java android app 開發(九)后臺之線程和服務-CSDN博客

開源 java android app 開發(十)廣播機制-CSDN博客

開源 java android app 開發(十一)調試、發布-CSDN博客

開源 java android app 開發(十二)封庫.aar-CSDN博客

推薦鏈接:

開源C# .net mvc 開發(一)WEB搭建_c#部署web程序-CSDN博客

開源 C# .net mvc 開發(二)網站快速搭建_c#網站開發-CSDN博客

開源 C# .net mvc 開發(三)WEB內外網訪問(VS發布、IIS配置網站、花生殼外網穿刺訪問)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

開源 C# .net mvc 開發(四)工程結構、頁面提交以及顯示_c#工程結構-CSDN博客

開源 C# .net mvc 開發(五)常用代碼快速開發_c# mvc開發-CSDN博客

本章節內容如下:實現了一個網站登錄和頁面抓取的功能,主要使用了?requests 和beautifulsoup4 ?庫。

一、引用庫的安裝

首先安裝requests 和beautifulsoup4 庫

cmd命令行安裝requests

pip install requests -i https://mirrors.aliyun.com/pypi/simple/

cmd命令行安裝beautifulsoup4?

pip install beautifulsoup4 -i https://mirrors.aliyun.com/pypi/simple/

用vscode終端安裝效果如下,cmd安裝效果和這個類似

?

二、爬蟲代碼解析

2.1? 源碼

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoinclass WebsiteLogin:def __init__(self, base_url):self.base_url = base_urlself.session = requests.Session()self.session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'})def find_hidden_inputs(self, html):"""查找表單中的隱藏字段"""soup = BeautifulSoup(html, 'html.parser')hidden_inputs = {}for input_tag in soup.find_all('input', type='hidden'):hidden_inputs[input_tag.get('name')] = input_tag.get('value', '')return hidden_inputsdef login(self, login_url, username, password, extra_data=None):"""登錄網站"""# 獲取登錄頁面try:login_page = self.session.get(urljoin(self.base_url, login_url))login_page.raise_for_status()except requests.RequestException as e:print(f"訪問登錄頁面失敗: {e}")return False# 獲取隱藏字段hidden_inputs = self.find_hidden_inputs(login_page.text)# 準備登錄數據login_data = {'inputName': username,'inputPwd': password,**hidden_inputs}# 添加額外的表單數據if extra_data:login_data.update(extra_data)# 提交登錄表單try:response = self.session.post(urljoin(self.base_url, login_url),data=login_data,headers={'Referer': urljoin(self.base_url, login_url)})response.raise_for_status()except requests.RequestException as e:print(f"提交登錄表單失敗: {e}")return False# 驗證登錄是否成功(根據實際網站調整)#if 'logout' not in response.text.lower() and 'sign out' not in response.text.lower():#    print("登錄失敗,請檢查憑據")#    return Falseif 'login' in response.url.lower():return Falseprint("登錄成功!")return Truedef get_page(self, page_url):"""獲取指定頁面的內容"""try:response = self.session.get(urljoin(self.base_url, page_url))response.raise_for_status()return response.textexcept requests.RequestException as e:print(f"獲取頁面失敗: {e}")return None# 使用示例
if __name__ == "__main__":# 配置信息config = {'base_url': 'http://xxx.com','login_url': '','username': 'xxx','password': 'xxx','target_page': '/xxx/xxx'}# 創建登錄實例web_login = WebsiteLogin(config['base_url'])# 嘗試登錄if web_login.login(config['login_url'], config['username'], config['password']):# 登錄成功后獲取目標頁面target_content = web_login.get_page(config['target_page'])if target_content:print(f"成功獲取目標頁面內容,長度: {len(target_content)}")# 保存內容with open('target_page.html', 'w', encoding='utf-8') as f:f.write(target_content)else:print("未能獲取目標頁面內容")else:print("登錄失敗,程序終止")

2.2? 核心參數,主要有config配置信息,信息有web登錄頁面鏈接地址,目標跳轉頁面鏈接地址,用戶名,用戶密碼。

config參數如下圖

?

2.3? login_data數據,數據里有登錄的字段,包含提交頁面的用戶名的字段,密碼字段。

login_data數據如下圖

?

2.4? requests.Session()會自動管理 Cookies,無需手動處理登錄后的會話狀態。

requests.Session如下圖

2.5? 登錄成功則將跳轉頁面保存為target_page.html

代碼位置如下

三.運行效果

3.1? 登錄成功后,跳轉到指定頁面,把指定頁面保存為target_page.html文件。

運行效果圖

?

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

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

相關文章

flink sql讀hive catalog數據,將string類型的時間戳數據排序后寫入kafka,如何保障寫入kafka的數據是有序的

在 Flink SQL 中,要確保從 Hive 讀取的 STRING 類型時間戳數據排序后有序寫入 Kafka,需要結合 批處理模式、時間類型轉換、單分區寫入 和 Kafka 生產者配置。以下是完整解決方案: 一、核心解決方案 1. 批處理模式 全局排序 將作業設置為批處…

7.17 滑動窗口 |assign |memo

lcp56. memo優化tle或者改用bfsclass Solution {int m, n;int dx[4] {0, 0, 1, -1};int dy[4] {1, -1, 0, 0};public:int conveyorBelt(vector<string>& matrix, vector<int>& start, vector<int>& end) {int ret INT_MAX;m matrix.size();n…

統計功效是什么?

統計功效的通俗理解可以把“統計功效”想象成偵探破案的能力——它代表統計檢驗&#xff08;偵探&#xff09;在犯罪事實確實存在&#xff08;真實效應存在&#xff09;時&#xff0c;成功發現真相&#xff08;檢測出效應&#xff09;的概率。核心比喻假設你是一個偵探&#xf…

大語言模型(LLM)訓練的教師強制(Teacher Forcing)方法

大語言模型&#xff08;LLM&#xff09;在訓練時使用一種名為“教師強制&#xff08;Teacher Forcing&#xff09;”的方法&#xff0c;而不是它們在推理&#xff08;生成文本&#xff09;時使用的“自回歸&#xff08;Autoregressive&#xff09;”方法 。闡明關于LLM訓練的一…

歸一化與激活函數:深度學習的雙引擎

歸一化和激活函數區別 歸一化和激活函數是深度學習中兩個不同但又存在關聯的技術,前者聚焦于“數據分布的調整”,后者聚焦于“引入非線性與輸出轉換”。 Softmax 既可以被視為一種歸一化操作,也屬于激活函數 因為它同時滿足兩者的核心特征,只是從不同角度定義:從“輸出…

C# --- 單例類錯誤初始化 + 沒有釋放資源導致線程泄漏

C# --- 單例類錯誤初始化 沒有釋放資源導致線程泄漏Background原因分析問題一&#xff1a; 錯誤初始化&#xff08;使用了箭頭函數&#xff09;問題一&#xff1a; 沒有Dispose資源Background 背景: service A的其中一個Api會向mq發送消息問題&#xff1a;線上發現這個服務經常…

MySQL基礎學習之DML,DQL(二)

這里寫目錄標題一、DML1、INSERT語句1)、給指定列添加數據2)、給全部列添加數據3)、批量數據添加數據4)、操作2、UPDATE語句3、DELETE語句二、DQL1、單表查詢1&#xff09;查詢語法2&#xff09;查詢全部3&#xff09;查詢部分4&#xff09;條件查詢5&#xff09;聚合函數6&…

在 Linux 系統中實現 Spring Boot 程序自動啟動的最佳實踐

在實際部署 Spring Boot 項目的生產環境中&#xff0c;如何確保服務自動啟動&#xff08;如開機自動運行、宕機自動恢復&#xff09;是一項基礎而關鍵的運維能力。本文將系統介紹如何在 Linux 中將 Spring Boot 應用注冊為 systemd 服務&#xff0c;實現進程守護與自動啟動。&a…

如何建立項目團隊的自驅力文化?

建立項目團隊的自驅力文化&#xff0c;關鍵在于賦權機制、目標共創、持續反饋、內在激勵、價值認同。 其中&#xff0c;“目標共創”尤其重要。項目成員若未參與目標制定&#xff0c;僅被動接受任務&#xff0c;將很難激發責任感和參與熱情。反之&#xff0c;通過共創目標&…

【React Native】布局文件-底部TabBar

布局文件-底部tabBar 內容配置 export default function Layout() {return (<Tabs />); }默認會將布局文件是將與它在同一個目錄的所有文件&#xff0c;包括下級目錄的文件&#xff0c;全都配置成Tab了。&#xff1a; 這樣做顯然不對&#xff0c;正確的做法是 在app目…

CompareFace使用

CompareFace 使用 CompareFace 有三種服務&#xff0c;分別是人臉識別&#xff08;RECOGNITION&#xff09;、人臉驗證&#xff08;VERIFICATION&#xff09;、人臉檢測&#xff08;DETECTION&#xff09;。 人臉識別其實就是人臉身份識別(每張照片只有一個人臉)&#xff0c;…

APP測試之Monkey壓力測試

&#xff08;一&#xff09;Monkey簡介 Monkey意指猴子&#xff0c;頑皮淘氣。所以Monkey測試&#xff0c;顧名思義也就像猴子一樣在軟件上亂敲按鍵&#xff0c;猴子什么都不懂&#xff0c;就愛搗亂。 Monkey 是 Android SDK 自帶的命令行工具&#xff0c;它通過向系統發送偽…

時序大模型為時序數據庫帶來的變革與機遇

時序數據&#xff08;Time Series Data&#xff09;作為記錄系統狀態隨時間變化的重要數據類型&#xff0c;在物聯網、金融交易、工業監控等領域呈爆炸式增長。傳統時序數據庫專注于高效存儲和查詢時序數據&#xff0c;而時序大模型&#xff08;Time Series Foundation Models&…

深入核心:理解Spring Boot的三大基石:起步依賴、自動配置與內嵌容器

深入核心&#xff1a;理解Spring Boot的三大基石&#xff1a;起步依賴、自動配置與內嵌容器 摘要&#xff1a;在上一章&#xff0c;我們領略了Spring Boot帶來的革命性開發體驗。但魔法的背后&#xff0c;必有其科學的支撐。本章將帶你深入Spring Boot的內核&#xff0c;系統性…

達夢數據庫配置兼容MySQL

前言 作為一名數據庫管理員或開發者&#xff0c;當項目需要從MySQL遷移到達夢數據庫時&#xff0c;最關心的莫過于兼容性問題。達夢作為國產數據庫的佼佼者&#xff0c;提供了良好的MySQL兼容模式&#xff0c;今天我就來分享一下如何配置達夢數據庫以實現對MySQL的兼容。 一、為…

js與vue基礎學習

vue創建項目 安裝node安裝node、npm、cnpm node -v npm -v #npm服務器位置處于國外&#xff0c;下載包的速度會比較緩慢。阿里為國內用戶提供的cnpm&#xff0c;他是npm的鏡像&#xff0c;下載第三方包時&#xff0c;們完全可以使用cnpm來替代npm。 cnpm -v在node中執行JavaScr…

【開源.NET】一個 .NET 開源美觀、靈活易用、功能強大的圖表庫

文章目錄一、項目介紹二、適用場景三、功能模塊四、功能特點五、效果展示六、開源地址一、項目介紹 LiveCharts2 是一個開源、簡單、靈活、交互式且功能強大的 .NET 圖表庫。LiveCharts2 現在幾乎可以在任何地方運行&#xff1a;Maui、Uno Platform、Blazor-wasm、WPF、WinFor…

使用Whistle自定義接口返回內容:Mock流式JSON數據全解析

一.mock接口返回數據流程 定位目標接口 在Whistle的Network面板中找到需要Mock的接口&#xff0c;右鍵點擊請求信息&#xff0c;選擇COPY -> URL復制完整URL&#xff0c;確保URL路徑精確到具體接口。準備Mock數據 點擊對應接口&#xff0c;在右側面板切換到response標簽頁&a…

【前端】富文本編輯器插件 wangEditor 5 基本使用(Vue2)

https://www.wangeditor.com/v5 一、安裝 首先安裝editor yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save安裝Vue2組件 yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save或者Vue3 yarn add wangeditor/…

自適應哈希索引 和 日志緩沖區

目錄 1. 自適應哈希索引在內存中的位置 2. 自適應哈希索引的作用 3. 為什么要創建自適應哈希索引 4. 適應哈希索引的Key -Value如何設置&#xff1f; 5. 日志緩沖區在內存中的位置 6. 日志緩沖區的作用 7. 日志不通過LogBuffer直接寫入磁盤不行嗎&#xff1f; 1. 自適應哈…