web scraper 抓取資料並做簡單資料分析

2022-07-04 04:48:12 字數 2510 閱讀 4253

其實 web scraper 說到底就是那點兒東西,所有的**都是大同小異,但是都還不同。這也是好多同學總是遇到問題的原因。因為沒有統一的模板可用,需要理解了 web scraper 的原理並且對目標**加以分析才可以。

今天再介紹一篇關於 web scraper 抓取資料的文章,除了 web scraper 的使用方式外,還包括一些簡單的資料處理和分析。都是基礎的不能再基礎了。

選擇這個**一來是因為作為乙個開發者在上面買了不少課,還有個原因就是它的專欄也比較有特點,需要先滾動載入,然後再點選按鈕載入。

開始正式的資料抓取工作之前,先來看一下我的成果,我把抓取到的90多個專欄的訂閱數和銷售總價做了乙個排序,然後把 top 10 拿出來做了乙個柱狀圖出來。

今天要抓的這個**是乙個 it 知識付費社群,極客時間,應該網際網路圈的大多數同學都聽說過,我還在上面買了 9 門課,雖然沒怎麼看過。

1、建立 sitemap,設定 start url 為

2、建立滾動載入的 selector,這只是個輔助,幫助我們把頁面載入到出現點選載入更多按鈕出現,設定如下,注意型別選擇 element scroll down,選擇整個課程列表區域作為 element。

3、建立點選載入更多按鈕的 selector,這個才是真正要抓取內容的 selector。之後會在它下面建立子選擇器。建立之前,需要下拉記載頁面,直到出現載入更多按鈕。

首先選擇元素型別為 element click 。

selector 選擇整個課程列表,並設定為 multiple。

click 選擇載入更多按鈕,這裡需要注意一點,之前的文章裡也提到過,這個按鈕沒辦法直接點選選中,因為點選後會觸發頁面載入動作,所以要勾選 enable key events,然後按 s 鍵,來選中這個按鈕。

click type 設定為 click more 型別。

click element uniqueness 設定 unique css selector。

4、進入上一步建立的 selector ,建立子選擇器,用來抓取最終需要的內容。

5、最後執行抓取就可以啦。

這裡只是很簡單的演示,真正的大資料量的資料清洗工作要費力耗時的多。而且也遠不止乙個 excel 能完成的,還需要程式**的配合,大多數時候還會用到資料庫,當然對於比較簡單的資料或者沒有開發經驗的同學來說,用 excel 也就是最簡單省事的選擇了。

開啟 csv 檔案後,第一列資訊是 web scraper 自動生成的,直接刪掉即可。不知道什麼原因,有幾條重複資料,第一步,先把重複項去掉,進入 excel 「資料」選項卡,點選刪除重複項即可。

第二步,由於抓下來的課時和報名人數在同乙個元素下,沒辦法在 web scraper 直接放到兩個列,所以只能到 excel 中處理。我的操作思路是這樣的,先複製一列出來,然後利用內容替換的方式,將其中一列的報名人數替換成空字元,替換的表示式為講 | *人已學習,這樣此列就變成了課時列。將另外一列的課時替換為空字串,先替換 x講,替換內容為*講 |,然後再替換人已學習, 那麼這列就變成了報名人數列。**就只保留當前**,刪掉無用列,並且處理掉限時、拼團、¥這些無用字元。

因為這裡抓取的資料比較簡單,也沒指望能分析出什麼結果。 一共90幾門課,也就是分析分析哪門課最受歡迎、**最高。直接在 excel 裡排個序就好了。然後計算一下幾門課程的總**。

當然真正的商業資料分析不僅僅是乙個 excel 畫個圖就搞定的事兒。也不是弄兩個柱狀圖就可以的了,一般都需要多個維度、資料關聯分析、深度挖掘等。

在 excel 中做了兩個柱狀圖,分別統計訂閱人數前十名和總銷售金額的前十名。下面是最後的呈現效果。

以上僅僅是乙個業餘選手做資料抓取和分析的過程,請酌情參考。

回覆「jike」獲取本例中的 sitemap。

不要吝惜你的「推薦」呦

Android日記抓取並儲存

轉於 android日誌抓取並儲存 有時候在除錯程式的時候,往往看不清錯誤原因,列印變數等相關資訊,那是因為android logcat重新整理太快導致。為此,我們有時候在除錯程式的時候,可以將我們的日誌儲存下來,便於檢視。儲存日誌命令 adb logcat v threadtime log.log...

利用python抓取指定格式資料並翻譯

要實現的目標 我的演算法實現的基本思路 遇見的問題及解決辦法def loop.close 此外,還用到了全域性變數,如下 def init 初始化 global global dict global dict defset value key,value 定義乙個全域性變數 global dict ...

httpClient抓取網頁並儲存mht格式的檔案

求高手援助 江湖救急啊。構造httpclient的例項 建立get方法的例項 getmethod getmethod new getmethod 使用系統提供 的預設的恢復策略 讀取內容 byte responsebody getmethod.getresponsebody 處理內容 列印html標...