今日目標:
學習用Excel抓取網頁數據
昨天,有個女學員提問:
大致意思是這樣的:
1- 女,文科生,大三沒什麼課
2- 感覺Python是潮流,不學就落伍了
3- 想學Python,從哪裡開始?
很明顯,朋友圈的裡的python廣告看多了。
想學習數據爬取,何用python?用Excel就可以了。
Excel從2016以後的版本,就內置了強大的數據處理神器Power Query,可以直接在Excel裡,實現數據爬取。
今天給大家介紹兩種方法:
第1種方法,是方法1。
第2種方法,是方法2。
怎麼樣?厲害吧?
兩種方法的區別,主要看網頁的結構。
如果網頁中的數據,使用的是table標籤,那麼直接導入web網頁就可以了。
比如,我們經常在豆瓣上,看即將上映的電影列表,這個就是一個table標籤的網頁。
網頁的地址是:https://movie.douban.com/coming
使用Excel抓取數據的步驟是這樣的。
操作步驟1- Excel導入web數據在「數據」選項卡中,點擊「自其它源」「自網站」。
在彈出的對話框中,粘貼上面的網址,點擊「確定」
這個時候,你會看到的就是Power Query的界面啦。
在窗口左側的列表中,選擇table0,右側就可以看到Power Query自動識別出來的表格數據了。
點擊「加載」,就可以把網頁數據抓取到表格中去了。
使用Power Query的好處是,如果網頁中的數據更新了,在導入結果上,右鍵「刷新」就可以同步數據。
這裡說的是網頁中包含table標籤的數據。
什麼意思呢?就是網頁中的數據,本來就是一個表格結構,這個方法和你直接複製網頁數據,粘貼到表格裡,是一樣的意思。
對於那些非table標籤的網頁數據,這個方法不好使。
怎麼識別一個網頁是不是table標籤呢?很簡單,選擇任意一個數據,然後在網頁中點擊右鍵,選擇「檢查」。
然後你會看到網頁的原始碼,你不需要懂,只要看到當前高亮的代碼中,包含以下任意的標籤,就表示網頁用了table標籤,可以用這個方法。
<table>
<td>
<tr>如果沒有的話,那就繼續看方法2。
方法2
使用table標籤保存數據,已經是非常古老的網頁技術了。現在的網頁大都使用div、span等格式更豐富、更靈活的標籤,來呈現數據。
這種網頁就不好直接導入了。
比如我常看的「知乎」,他們的網頁裡一個table都沒有。
用方法1導入到Power query裡,左側沒有table數據,就不好抓取了。
那怎麼辦呢?
這個時候就要直接抓取數據包了。
本質上,網頁中的數據都會包打包成一個數據包,發送個網頁後,網頁再讀取數據包進行渲染。
這個數據包常用的格式是JSON,那麼我們只要把JSON數據包抓取下來,也可以實現網頁數據抓取。
不管他,幹就完事兒了。
「下方高能預警」,如果你看不懂,可以直接跳過看方法3。
操作步驟我們以知乎搜索Excel問題為例。
1- 識別數據包首先,在頁面中點擊右鍵,選擇「檢查」。
然後,右側會出現網頁調試窗口,然後點擊「network」「xhr」,在這裡面可以看到所有的數據傳輸記錄。
嘗試著在知乎中搜索「Excel」,就可以看到數據的傳輸了。
向下滾動頁面,當右側列表匯總看到了「search_v3?t=」時,抓住它,這個就是我們需要的數據包。
2- 複製數據包連結
然後在這個數據包上,點擊右鍵選擇「copy link address」複製數據包的連結。
3- 導入json數據
接下來就進入到了Excel操作界面,在「數據」選項卡中,點擊「自其它源」「自網站」,粘貼數據包的連結。
點擊確定後,就進入到了Power Query的界面。
數據包的結構,像是我們的「文件夾」一樣,數據按照類別分別保存在不同的「子文件夾」中。
打開數據包「文件夾」的方式,就是在數據上,點擊右鍵選擇「深化」。
在數據上依次點擊「深化」就可以找到我們的數據了。
4- 批量讀取數據
最後,再寫幾個簡單的函數,把「子文件」數據批量的讀取出來。
在「主頁」選項卡中,點擊「高級編輯器」打開函數編輯窗口。
編寫幾個簡單的函數,我們就完成了數據的抓取。
最終抓取的數據如下:
高級玩法
當然,如果你比較熟悉Power Query的話,可以在上面的基礎上,再加入參數,可以根據表格中的「搜索詞」,實時的搜索知乎文章,一鍵刷新統計結果。
方法3
專業的事情交給專業的工具來做。
Power Query是專業的數據整理插件,不是數據爬取軟體,所以方法2,你看著可能會有些吃力。
在爬蟲這個領域,還是要用專業軟體,比如「后羿採集器」。點擊幾下按鈕,就可以輕鬆完成數據抓取。。
操作步驟打開「后羿採集器」,在「網址」欄中粘貼入知乎的搜索網址,如:
然後點擊「智能採集」,接著后羿採集器會自動識別網頁中的數據,等待識別完成。
識別完成後,點擊「開始採集」,數據就開始爬取了。
爬取完成後,在彈出的對話框裡,點擊「導出」,數據就自動以表格的形式保存下來了。
總結
專業的事情,交給專業的工具來做。
1- 簡單的表格類網頁,使用Power Query抓取,舉手之勞。
2- 複雜的網頁,使用爬蟲軟體,也是點點按鈕的事情。
關於Power Query和爬蟲,我有兩篇更為詳細的文章,推薦給你,點擊圖片直達。
後臺回復知乎、爬蟲,你會有意外收穫哦!
考考你python可以爬蟲,但不是挖能的
Excel也可以爬蟲,但是沒有掌握高級的Power query技巧
最簡單爬蟲,還是使用爬蟲軟體
最後出一個小測試題吧!
我在國家統計局的網站中,找到了2010年的人口普查數據。
網址是:http://www.stats.gov.cn/tjsj/pcsj/rkpc/6rp/indexch.htm,或者點擊「閱讀原文」獲取。
這是一個典型的table類網頁。請使用Power Query功能,把這個數據抓取到表格中。
做完了,可以微博@拉登Dony,來at我交個作業。
好了今晚就到這裡,下課!
我是拉小登,一個會設計表格的Excel老師
= = 推薦文章 = =
【建議收藏】教你一個最最最最最最簡單的爬蟲方法
運營:99%的Excel使用者都不知道,Excel還可以做搜尋引擎,太神奇了