python提取html表格_想知道世界谁最有钱?3行Python代码告诉你
想了解世界誰最有錢嗎?
維基百科有專門的網頁來描述世界最有錢的人。
當然,為了快速和精確定位符合預期的結果,用Python來爬取網頁并分析是一個不錯的辦法。
但你知道嗎?Python中用于執行Web爬網的兩個廣泛使用的庫,BeautifulSoup和Scrapy用起來很麻煩,甚至作詩說“難于上青天”。
為什么呢?因為需要從網頁里找到元素標簽,然后根據它們提取文本,再清洗數據。而且在這個過程中會遇到各種各樣的坑。讓初涉其中的同學苦惱不已。“我不就看看有哪些富豪嗎?算了,還是用人眼看吧。”
有沒有幾行就能搞定抓取并分析的辦法呢?
常用Python進行數據分析的同學可能不知道,手里使用的熟練工具Pandas卻隱藏了精于數據爬取的獨家絕技。本文將向您展示如何使用Pandas直接爬取表格數據的簡便方法。
用Pandas爬取網頁,并輕松結構化
本文將從Wikipedia Page提取世界十大億萬富翁的詳細信息。(維基百科(Wikipedia),是一個基于維基技術的多語言百科全書寫作計劃,用多種語言編寫的網絡百科全書。非營利組織維基媒體基金會負責營運維基百科,接受捐贈。2018年12月,維基百科入圍2018世界品牌500強。)
下面將使用read_html的Pandas庫的方法讀取HTML表。
import pandas as pdurl ='https://zh.wikipedia.org/wiki/The_World%27s_Billionaires'df_list = pd.read_html(url)該腳本爬取指定鏈接,并將HTML表返回,并結構化到DataFrame的列表中。
真正的王者,不在于千萬般閃亮動作。一個小動作就能完成其他工具庫幾十行的功能,Pandas,我服了!
接下來查看找到的數據總數:
len(df_list)Output:32要訪問特定的表,只需訪問列表的該元素。例如,df_list[2]將返回下表:
進階玩法一:把世界富豪們做個排名
上面只是介紹pandas的常規玩法,其實可以使用index_col參數來選擇表索引的特定列。這里按第二列財富進行排名,從而實現將抓取的世界富豪排名。
例:
pd.read_html(url,index_col = 1)[2]返回下表:
從中看到亞馬遜的Jeff Bezos已經成為當仁不讓的首富了,第一名了。
進階玩法二:用自然語言描述來實現自動統計返回
當然,這個題目有點人工智能的味道,但實際并不是這么智能。呵呵,大家原諒下標題黨。這個功能是利用match參數指定返回包含特定字符串或正則表達式的表的列頭,從而實現返回對應列頭的數據列表功能。
例:
pd.read_html(url, match='Number and combined net worth of billionaires by year')[0].head()是不是太神奇了!pandas如何實現的這個功能呢?看看對應原始網頁大家就應該明白了。
太牛了!pandas直接抓取相對應文本標題的表格并結構化輸出。
進階玩法三:其他參數
skiprows 參數允許我們跳過起始的" n"行
header 參數可用于使指定的行作為列標題
例:
pd.read_html(url,skiprows = 3,header = 0)[0] .head()在本文中,從了解世界富豪排名出發,學習了如何使用pandas的read_html方法輕松地從頁面抓取HTML表并進行解析。隨后,對read_html一些重要參數也進行講解,借助這些參數可以進一步讓我們輕松抓取所需的內容。
Pandas 不僅僅是數據分析的王者,也是爬蟲世界的掃地僧啊。
- END -
文源網絡,僅供學習之用。如有侵權,聯系刪除。往期精彩◆ ?50款開源工具你都用過嗎?
◆ ?python+C、C++混合編程的應用
◆ ?python網絡爬蟲的基本原理詳解
◆ ?Python自動操控excel,一小時解決你一天的工作
◆ ?如何用Python增強Excel,減少處理復雜數據的痛苦?
總結
以上是生活随笔為你收集整理的python提取html表格_想知道世界谁最有钱?3行Python代码告诉你的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: htm怎么让图片和搜索框在同一行_新手怎
- 下一篇: centos网络隔一段时间就断_“路由器