91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas函數如何自動爬取Web圖表

發布時間:2021-11-30 14:46:38 來源:億速云 閱讀:164 作者:小新 欄目:大數據

這篇文章主要介紹了Pandas函數如何自動爬取Web圖表,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

介紹一個非常實用且神奇的函數-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

Pandas函數如何自動爬取Web圖表  

可以看到上面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]
 
Pandas函數如何自動爬取Web圖表  

但這里只爬取了第一頁的數據表,因為天天基金網基金凈值數據每一頁的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() 再獲取表格數據。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Pandas函數如何自動爬取Web圖表”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辉县市| 乌拉特中旗| 随州市| 苍南县| 保康县| 虎林市| 观塘区| 株洲市| 龙海市| 庆阳市| 宜州市| 西贡区| 三江| 开化县| 丽江市| 密云县| 临朐县| 广灵县| 汨罗市| 田阳县| 广东省| 南溪县| 随州市| 溧水县| 泗阳县| 松桃| 云林县| 贡嘎县| 天全县| 祁阳县| 平原县| 霍林郭勒市| 北宁市| 革吉县| 周口市| 长子县| 日照市| 洛隆县| 周宁县| 且末县| 奉化市|