這個Pandas函數可以自動爬取Web圖表

Pandas作為數據科學領域鰲頭獨占的利器,有著豐富多樣的函數,能實現各種意想不到的功能。

作為學習者沒辦法一次性掌握Pandas所有的方法,需要慢慢積累,多看多練。

這次為大家介紹一個非常實用且神奇的函數-read_html(),它可免去寫爬蟲的煩惱,自動幫你抓取靜態網頁中的表格。

簡單用法:pandas.read_html(url)

主要參數:

  • io:接收網址、文件、字符串
  • header:指定列名所在的行
  • encoding:The encoding used to decode the web page
  • attrs:傳遞一個字典,用其中的屬性篩選出特定的表格

只需要傳入url,就可以抓取網頁中的所有表格,抓取表格后存到列表,列表中的每一個表格都是dataframe格式。

我們先簡單抓取天天基金網的基金凈值表格,目標url:http://fund.eastmoney.com/fund.html

可以看到上面html里是table表格數據,剛好適合抓取。

import pandas as pd
url = "http://fund.eastmoney.com/fund.html"
data = pd.read_html(url,attrs = {'id': 'oTable'})
# 查看表格數量
tablenum = len(data)
print(tablenum)

輸出:1

通過'id': 'oTable'的篩選后,只有一個表格,我們直接爬取到了基金凈值表。

data[1]

但這里只爬取了第一頁的數據表,因為天天基金網基金凈值數據每一頁的url是相同的,所以read_html()函數無法獲取其他頁的表格,這可能運用了ajax動態加載技術來防止爬蟲。

附:一般來說,一個爬蟲對象的數據一次展現不完全時,就要多次展示,網站的處理辦法有兩種: 1、下一個頁面的url和上一個頁面的url不同,即每個頁面的url是不同的,一般是是序號累加,處理方法是將所有的html頁面下載至本地,從而拿到所有數據;(天天基金網顯示不是這種類型) 2、下一個頁面的url和上一個頁面的url相同,即展示所有數據的url是一樣的,這樣的話網頁上一般會有“下一頁”或“輸入框”與“確認”按鈕,處理方法是將代碼中觸發“下一頁”或“輸入框”與“確認”按鈕點擊事件來實現翻頁,從而拿到所有數據。(天天基金網是這種類型)

剛只是簡單地使用了read_html()獲取web表格的功能,它還有更加復雜的用法,需要了解其參數含義。

詳細用法

pandas.read_html( io, match='.+', flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, thousands=', ', encoding=None, decimal='.', converters=None, na_values=None, keep_default_na=True, displayed_only=True)

詳細參數

io:?str, path object 或 file-like objectURL,file-like對象或包含HTML的原始字符串。請注意,lxml僅接受http,ftp和文件url協議。如果您的網址以'https'您可以嘗試刪除's'。
match:?str 或 compiled regular expression, 可選參數將返回包含與該正則表達式或字符串匹配的文本的表集。除非HTML非常簡單,否則您可能需要在此處傳遞非空字符串。默認為“。+”(匹配任何非空字符串)。默認值將返回頁面上包含的所有表。此值轉換為正則表達式,以便Beautiful Soup和lxml之間具有一致的行為。
flavor:?str 或 None要使用的解析引擎。 ‘bs4’和‘html5lib’彼此同義,它們都是為了向后兼容。默認值None嘗試使用lxml解析,如果失敗,它會重新出現bs4+html5lib。
header:?int 或 list-like 或 None, 可選參數該行(或MultiIndex)用于創建列標題。
index_col:?int 或 list-like 或 None, 可選參數用于創建索引的列(或列列表)。
skiprows:?int 或 list-like 或 slice 或 None, 可選參數解析列整數后要跳過的行數。從0開始。如果給出整數序列或切片,將跳過該序列索引的行。請注意,單個元素序列的意思是“跳過第n行”,而整數的意思是“跳過n行”。
attrs:?dict 或 None, 可選參數這是屬性的詞典,您可以傳遞該屬性以用于標識HTML中的表。在傳遞給lxml或Beautiful Soup之前,不會檢查它們的有效性。但是,這些屬性必須是有效的HTML表屬性才能正常工作。例如, attrs = {'id': 'table'} 是有效的屬性字典,因為‘id’ HTML標記屬性是任何HTML標記的有效HTML屬性,這個文件。 attrs = {'asdf': 'table'} 不是有效的屬性字典,因為‘asdf’即使是有效的XML屬性,也不是有效的HTML屬性。可以找到有效的HTML 4.01表屬性這里。可以找到HTML 5規范的工作草案這里。它包含有關現代Web表屬性的最新信息。
parse_dates:?bool, 可選參數參考read_csv()更多細節。
thousands:?str, 可選參數用來解析成千上萬個分隔符。默認為','。
encoding:?str 或 None, 可選參數用于解碼網頁的編碼。默認為NoneNone保留先前的編碼行為,這取決于基礎解析器庫(例如,解析器庫將嘗試使用文檔提供的編碼)。
decimal:?str, 默認為 ‘.’可以識別為小數點的字符(例如,對于歐洲數據,請使用“,”)。
converters:?dict, 默認為 None用于在某些列中轉換值的函數的字典。鍵可以是整數或列標簽,值是采用一個輸入參數,單元格(而非列)內容并返回轉換后內容的函數。
na_values:?iterable, 默認為 None自定義NA值。
keep_default_na:?bool, 默認為 True如果指定了na_values并且keep_default_na為False,則默認的NaN值將被覆蓋,否則將附加它們。
displayed_only:?bool, 默認為 True是否應解析具有“display:none”的元素。

最后, read_html() 僅支持靜態網頁解析,你可以通過其他方法獲取動態頁面加載后response.text 傳入 read_html() 再獲取表格數據。

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

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

相關文章

vLLM與SGLang在自然語言處理領域的技術架構與性能對比研究

隨著大語言模型在工業界和學術界的廣泛應用,高效推理框架的選擇成為自然語言處理領域的關鍵挑戰。vLLM與SGLang作為當前最前沿的推理優化框架,分別通過創新的PagedAttention和RadixAttention機制展現了獨特的技術優勢。本文將系統對比兩大框架的核心架構…

樓宇自動化:Modbus 在暖通空調(HVAC)中的節能控制(二)

Modbus 在 HVAC 節能控制中的應用案例案例一:某商業建筑 HVAC 系統節能改造某大型商業建筑,總建筑面積達 5 萬平方米,涵蓋了購物中心、餐飲區和娛樂場所等多種功能區域 。改造前,其 HVAC 系統采用傳統的控制方式,設備之…

win10安裝Elasticsearch

1 啟動elasticsearch 下載地址:Download Elasticsearch | Elastic 雙擊elasticsearch.bat elasticsearch黑窗口啟動亂碼問題解決方案 到 config 文件下找到 jvm.options 文件 打開后 在文件末尾空白處 添加 -Dfile.encodingGBK 保存后重啟即可。 啟動后輸入&am…

[Meetily后端框架] Whisper轉錄服務器 | 后端服務管理腳本

第七章:Whisper轉錄服務器 歡迎回來! 到目前為止,我們已經深入探索了"meeting-minutes"項目的"大腦"——Python后端。 我們已經了解了它如何通過后端API網關接收文本轉錄,使用摘要數據結構(Pyd…

Azure-ADF 抽取數據

1,Azure 訪問地址 1,國際版 https://portal.azure.com/#homehttps://portal.azure.com/#home2,世紀互聯中國版 Microsoft Azure 由世紀互聯運營https://portal.azure.cn/2,創建資源組并且所有的后續組件都是再此資源下面創建。 3,創建Data Factory 工具 4,核心組件 1. 管…

django queryset 去重

在Django中,使用QuerySet時,如果你想要對查詢結果進行去重(即去除重復的記錄),你可以使用幾種不同的方法。這里列出了一些常見的方法: 使用distinct() distinct()方法用于返回QuerySet中不重復的唯一對象。…

WIFI MTU含義 ,協商修改的過程案例分析

WIFI MTU含義 ,協商修改的過程案例分析 文章目錄 **WIFI MTU含義 ,協商修改的過程案例分析****一、WIFI MTU的含義****二、MTU協商修改的過程案例分析****1. TCP/IP協議中的MTU協商****2. 藍牙(BLE)中的MTU協商****3. 網絡設備配置中的MTU調整****三、協商修改的注意事項**…

記一次Android Studio編譯報錯:Execution failed for task ‘:app:compileDebugAidl‘

問題背景: android studio導入AIDL文件的時候編譯提示: Execution failed for task :app:compileDebugAidl. > A failure occurred while executing com.android.build.gradle.tasks.AidlCompile$AidlCompileRunnable > com.android.ide.common.process.ProcessEx…

selenium跳轉到新頁面時如何進行定位

在 Selenium 中,當你跳轉到新頁面(例如通過點擊鏈接、提交表單或 JavaScript 重定向)時,通常會遇到頁面加載或窗口切換的問題。為了在新頁面上繼續進行頁面定位操作,你需要確保以下幾點:? 1. 等待頁面加載…

QT——QComboBox組合框控件

QComboBox概述QComboBox是Qt框架中提供的組合框控件,它結合了按鈕和下拉列表的功能,允許用戶從預定義的選項列表中選擇一個或多個項目。基本特性特性描述顯示方式顯示當前選中項,點擊后展開下拉列表編輯能力可設置為可編輯或不可編輯項目類型…

CentOS 安裝jenkins筆記

1. 安裝 Java。目前一般jdk要求11以上,否則會報錯2. 手動添加 Jenkins 倉庫先創建一個專門的Jenkins文件夾:mkdir jenkins然后 執行 sudo curl -fsSL https://pkg.jenkins.io/redhat/jenkins.io.key -o /etc/pki/rpm-gpg/jenkins.io.key 然后&#xff0…

C#枚舉:從基礎到高級的全方位解析

C#枚舉:從基礎到高級的全方位解析 在 C# 編程中,枚舉(Enum)是一種特殊的值類型,用于定義命名的常量集合,它為代碼提供了更強的類型安全、可讀性和可維護性。從簡單的狀態標識到復雜的位運算組合&#xff0c…

[spring6: Resource ResourceLoader ResourceEditor]-加載資源

Resource Resource 接口為處理和訪問不同類型資源(如文件、URL、輸入流等)提供了統一的 API,支持資源的存在性檢查、讀取、轉換等操作。 public interface Resource extends InputStreamSource {boolean exists();default boolean isReadable…

Spring Boot - Spring Boot 集成 MyBatis 分頁實現 PageHelper

一、PageHelper 概述 PageHelper 是一個優秀的 MyBatis 分頁插件&#xff0c;可以方便地在 Spring Boot 項目中使用 MyBatis 結合 PageHelper 實現分頁功能二、PageHelper 引入 1、依賴引入 pom.xml <properties>...<postgresql.verison>42.5.6</postgresql.ver…

jenkins自動化部署前端vue+docker項目

文章目錄一、準備工作二、編寫dockerfile文件三、新建jenkins任務一、準備工作 默認你的服務器centos已經搭建完成&#xff0c;同時已經安裝了jenkins和docker。 接下來去下載開源項目ruoyi并上傳到自己的gitee中。 二、編寫dockerfile文件 打開項目工程&#xff0c;在rouy…

opencv中contours的使用

一 Contour FindingContours使用 STL-style vector<> 表示&#xff0c;如 vector<cv::Point>, vector<cv::Point2f>。opencv中&#xff0c;使用函數 cv::findContours() 尋找contours&#xff0c; 具體函數定義如下&#xff1a;void cv::findContours(cv::In…

網絡安全初級

1、docker并配置代理 &#xff08;1&#xff09;在Ubuntu中安裝docker apt-get install docker.io docker-compose &#xff08;2&#xff09;安裝完成后&#xff0c;進入/etc/systemd/system/docker.service.d/http-proxy.conf配置文件下進行代理的配置&#xff0c;配置如圖…

JetBrains IDE 性能優化指南:idea.vmoptions 核心參數解析與配置建議

文章目錄深入解析 JetBrains IDE 的 VM 選項&#xff1a;idea.vmoptions 參數詳解一、內存與垃圾回收配置二、診斷與錯誤處理三、運行時優化參數四、模塊系統與反射控制五、特殊參數說明六、配置建議指南深入解析 JetBrains IDE 的 VM 選項&#xff1a;idea.vmoptions 參數詳解…

Datawhale AI夏令營 《基于帶貨視頻評論的用戶洞察挑戰賽》Part .1.

1. 賽題 參賽者需要構建端到端的評論分析系統&#xff0c;完成三大核心任務&#xff1a; 商品識別 輸入&#xff1a;視頻描述文本(video_desc)和標簽(video_tags)輸出&#xff1a;精準識別推廣商品名稱(Xfaiyx Smart Translator/Recorder) 多維情感分析 維度&#xff1a;情感傾…

【博文匯項目全維度測試報告:功能與自動化雙軌驗證】

&#x1f308;個人主頁: Aileen_0v0 &#x1f525;熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?&#x1f4ab;個人格言:“沒有羅馬,那就自己創造羅馬~” 文章目錄 項目背景:項目背景與意義&#xff1a;項目概述已實現的主要功能包括&#xff1a;當前系統存在的不足…