之前寫了篇Python批量爬取網頁數據的文章,後來發現Excel隨著版本的迭代,已經完全支持多頁面抓取數據了,不用擼代碼,點點滑鼠就能抓取數據,讓我們一起看看吧~
網頁解析
在抓取數據之前,先對網頁進行一下解析,下圖中是豆瓣TOP250初始頁面,拉到最底部可以發現一共有10個頁面,每個頁面25部電影,一共250部電影。
我們依次獲取前三個頁面的網址可以發現它們之間的規律,每個網址除了中間的數字,其它地方都是一樣的,數字從0/25/50,以25遞增(每個頁面的電影數),一共10個頁面。
發現規律之後,我們將10個頁面之間的數字存儲在一張表中備用,下圖A列所示,留存備用。
數據抓取
Excel2016及其以上版本內嵌了從Web批量抓取的功能(「數據」—「新建查詢」—「從其它源」—「從Web」),案例演示的版本未達到,所以我下載了一個Power BI Desktop(Excel延伸產品),免費安裝免費使用,效果同Excel,不用擔心不會使用,會用Excel就會操作。
打開Power BI Desktop或者Excel,點擊【獲取數據】—【Web】(Excel2016及以上版本在「數據」—「新建查詢」—「從其它源」—「從Web」)
界面設置:
點擊高級之後,URL部分,點擊「添加部件」,一共三個框,將豆瓣TOP250首頁網址以數字0為分隔,分成三段,分別放置於三個框內,如下圖所示:
可以發現,在URL預覽框內會自動顯示完整的網址,點擊確定,完成設置。
導航器界面
之後程序會進入抓取數據狀態,稍等會兒,跳出「導航器」界面,左側有一張表「表1」,勾選之後,右側展示表明細數據,可以發現就是豆瓣TOP250的首頁面的25部電影;
一共有抓取了9個欄位,包括序列號、電影名、評分、評價人次、電影簡介等信息,有部分列是不需要的,我們進入Power Query界面進行刪除,點擊底部的「轉換數據」進入Power Query界面。
Power Query數據編輯
進入Power Query界面之後,只保留序號、評分、電影名、評價人次四列,其餘列皆做刪除處理,刪除之後,分別對四列數據進行重命名。動圖展示如下:
設置自定義函數
依次點擊【主頁】—【高級編輯器】,在彈出的界面中,在字母「let」前輸入以下代碼:
(p as number) as table =>
接著將第三行代碼中的數字【「0」】替換為【(Number.ToText(p))】,如下圖所示:
(Number.ToText(p))
完成以上兩步的設置後,點擊「確定」,可以發現原先的表1變成了函數樣式,fx 表1,其中p是函數參數,控制頁碼,如輸入25,即可獲得TOP250第二個頁碼電影列表的數據。
批量調用,批量抓取數據
接著點擊【新建源】—【Excel】,選擇第一步留存備用的Excel表格,導入之後,點擊【添加列】—【調用自定義函數】,下拉功能查詢選擇【表1】,點擊確定。
界面會彈出一個警告框【要求與數據隱私有關的信息】,點擊【繼續】,勾選【忽略此文件的隱私級別檢查。……】,點擊【保存】之後,程序進入頁面抓取階段。
由於抓取頁面較多,程序需要運行一段時間,十幾秒之後,數據抓取完畢,一共十個頁面,存儲在10張表中,點擊欄位【表1】,勾選【展開】,TOP250信息皆展示在表中。
此時數據還在Power Query中,點擊【開始】—【關閉並上載】將數據加載到Excel當中,完成數據爬取。
小結
不會擼代碼的我們,曾對數據爬取望而生畏,隨著ExcelBI工具的豐富,數據抓取也將變得簡單化,快去嘗試下吧~
如果你沒有安裝高版本的Excel,不妨試著安裝下Power BI Desktop,十分方便,不用註冊,打開就可以使用,應用商店Microsoft store搜Power BI Desktop下載即可。