網頁資料抓取工具,webscraper 最簡單的資料抓取教程,人人都用得上

風的姿態發表於2018-02-11

Web Scraper 是一款免費的,適用於普通使用者(不需要專業 IT 技術的)的爬蟲工具,可以方便的通過滑鼠和簡單配置獲取你所想要資料。例如知乎回答列表、微博熱門、微博評論、淘寶、天貓、亞馬遜等電商網站商品資訊、部落格文章列表等等。

轉載請註明原地址:https://www.cnblogs.com/fengzheng/p/8440806.html

環境需求

這麼簡單的工具當然對環境的要求也很簡單了,只需要一臺能聯網的電腦,一個版本不是很低的 Chrome 瀏覽器,具體的版本要求是大於 31 ,當然是越新越好了。目前 Chrome 的已經是60多了,也就是說這個版本要求也不是很高。

安裝過程

  • 線上安裝方式

    線上安裝需要具有可FQ網路,可訪問 Chrome 應用商店

    1、線上訪問 web Scraper 外掛 ,點選 “新增至 CHROME”。

1.png

2、然後點選彈出框中的“新增擴充套件程式”

2.png

3、安裝完成後在頂部工具欄顯示 Web Scraper 的圖示。

3.png

  • 本地安裝方式

    不能FQ的可以使用本地FQ方式,在本公眾號回覆「爬蟲」,可下載 Chrome 和 Web Scraper 擴充套件外掛

    1、開啟 Chrome,在位址列輸入 chrome://extensions/ ,進入擴充套件程式管理介面,然後將下載好的擴充套件外掛 Web-Scraper_v0.3.7.crx 拖拽到此頁面,點選“新增到擴充套件程式”即可完成安裝。如圖:

4.gif

2、安裝完成後在頂部工具欄顯示 Web Scraper 的圖示。

3.png

初識 web scraper

開啟 Web Scraper

開發人員可以路過看後面了

windows 系統下可以使用快捷鍵 F12,有的型號的筆記本需要按 Fn+F12;

Mac 系統下可以使用快捷鍵 command+option+i ;

也可以直接在 Chrome 介面上操作,點選設定—>更多工具—>開發者工具

5.png

開啟後的效果如下,其中綠色框部分是開發者工具的完整介面,紅色框部分是 Web Scraper 區域,也就是我們之後要操作的部分。

6.png

注意:如果開啟開發者工具在瀏覽器的右側區域,則需要調節開發者工具位置到瀏覽器底部。

7.gif

原理及功能說明

我們抓取資料一般都是什麼場景呢,如果只是零星的幾條資料或者特定的某條資料也就不值得用工具了,之所以用工具是因為要批量的獲取資料,而用手工方式又太耗時費力,甚至根本不能完成。例如抓取微博熱門前100條,當然可以一頁一頁的翻,但是實在是太耗精力,再比如說知乎某個問題的所有答案,有的熱門問題回答數成千上萬,手工來,還是省省吧。

基於這樣的一種需求,一般可採用兩種方式採集這些資料,一種叫“我們程式設計師的方式”,另一種叫“你們普通人的方式”。

“我們程式設計師的方式”是指開發人員會根據需求自己寫個爬蟲或者利用某個爬蟲框架,盯著螢幕狂敲程式碼,根據需求的複雜程度,敲程式碼的時長從一兩個小時到一兩天不等,當然如果時間太長的話可能是因為需求太複雜,針對這種複雜的需求來說,普通人的方式或許也就行不通了。常用的爬蟲框架 Scrapy(Python)、WebMagic(Java)、Crawler4j(Java)。

這篇還是主要介紹“你們普通人的方式”,也就是 Web Scraper 這個工具,因為其介面簡單、操作簡單,並且可匯出 Excel 格式,不懂開發的同學也可以很快上手。而且對於一些簡單的需求,開發人員也沒必要自己實現個爬蟲,點幾下滑鼠畢竟要比敲半天程式碼快吧。

資料爬取的思路一般可以簡單概括如下:

1、通過一個或多個入口地址,獲取初始資料。例如一個文章列表頁,或者具有某種規則的頁面,例如帶有分頁的列表頁;

2、根據入口頁面的某些資訊,例如連結指向,進入下一級頁面,獲取必要資訊;

3、根據上一級的連結繼續進入下一層,獲取必要資訊(此步驟可以無限迴圈下去);

原理大致如此,接下來正式認識一下 Web Scraper 這個工具,來,開啟開發者工具,點到 Web Scraper 這個標籤欄,看到分為三個部分:

8.png

Create new sitemap:首先理解 sitemap ,字面意思網站地圖,這裡可以理解為一個入口地址,可以理解為其對應一個網站,對應一個需求,假設要獲取知乎上的一個問題的回答,就建立一個 sitemap ,並將這個問題所在的地址設定為sitemap 的 Start URL,然後點選 “Create Sitemap”即可建立一個 sitemap。

9.png

Sitemaps:sitemap 的集合,所有建立過的 sitemap 都會在這裡顯示,並且可以在這裡進入一個 sitemap 進行修改和資料抓取等操作。

10.png

Sitemap:進入某個 sitemap ,可以進行一系列的操作,如下圖:

11.png

其中紅色框部分 Add new selector 是必不可少的步驟。selector 是什麼呢,字面意思:選擇器,一個選擇器對應網頁上的一部分割槽域,也就是包含我們要收集的資料的部分。

需要解釋一下,一個 sitemap 下可以有多個 selector,每個 selector 有可以包含子 selector ,一個 selector 可以只對應一個標題,也可以對應一整個區域,此區域可能包含標題、副標題、作者資訊、內容等等資訊。

Selectors:檢視所有的選擇器。

Selector graph:檢視當前 sitemap 的拓撲結構圖,根節點是什麼,包含幾個選擇器,選擇器下包含的子選擇器。

Edit metadata:可以修改 sitemap 資訊,標題和起始地址。

Scrape:開始資料抓取工作。

Export data as CSV:將抓取的資料以 CSV 格式匯出。

到這裡,有一個簡單的認識就可以了,實踐出真知,具體的操作案例才具有說服力,下面就以幾個例子來說一說具體的用法。

案例實踐

簡單試水 hao123

由淺入深,先以一個最簡單的例子為入口,只是作為進一步認識 Web Scraper 服務

需求背景:看到下面 hao123 頁面中紅色框住的部分了吧,我們的需求就是統計這部分割槽域中的所有網站名稱和連結地址,最後以生成到 Excel 中。 因為這部分內容足夠簡單,當然真正的需求可能比這複雜,這麼幾個資料手工統計的時間也很快。

12.png

開始操作

1、假設我們已經開啟了 hao123 頁面,並且在此頁面的底部開啟了開發者工具,並且定位到了 Web Scraper 標籤欄;

2、點選“Create Sitemap”;

13.png

3、之後輸入 sitemap 名稱和 start url,名稱只為方便我們標記,就命名為hao123(注意,不支援中文),start url 就是hao123的網址,然後點選 create sitemap;

14.png

4、之後 Web Scraper 自動定位到這個 sitemap,接下來我們新增一個選擇器,點選“add new selector”;

15.png

5、首先給這個 selector 指定一個 id,就是一個便於識別 名字而已,我這裡命名為 hot。因為要獲取名稱和連結,所以將Type 設定為 Link,這個型別就是專門為網頁連結準備的,選擇 Link 型別後,會自動提取名稱和連結兩個屬性;

16.png

6、之後點選 select ,然後我們在網頁上移動游標,會發現游標所到之處會有顏色變化,變成綠色的,表示就是我麼當前選擇的區域。我們將游標定位到需求裡說的那一欄的某個連結處,例如第一個頭條新聞,在此處單擊,這個部分就會變成紅色,說明已經選中了,我們的目的是要選多個,所以選中這個之後,繼續選第二個,我們會發現,這一行的連結都變成了紅色,沒錯,這就是我們要的效果。然後點選"Done selecting!",最後別忘了勾選 Multiple ,表示要採集多條資料;

17.png

7、最後儲存,save selector。點選Element preview 可以預覽選擇的區域,點選 Data preview 可以在瀏覽器裡預覽抓取的資料。 後面的文字框裡的內容,對於懂技術的同學來說很清楚,這就是 xpath,我們可以不通過滑鼠操作,直接手寫 xpath 也可以;

完整操作過程如下:

18.gif

8、上一步操作完,其實就可以匯出了。先別急,看一下其他的操作,Sitemap hao123 下的 Selector graph,可以看出拓撲結構圖,_root 是根 selector ,建立一個 sitemap 自動會有一個 _root 節點,可以看到它的子 selector,就是我們建立的 hot selector;

19.png

9、Scrape ,開始抓取資料。

10、Sitemap hao123 下的 Browse ,可以通過瀏覽器直接檢視抓取的最後結果,需要再;

20.png

11、最後,使用 Export data as CSV,以 CSV 格式匯出,其中 hot 列是標題,hot-href 列是連結;

21.png

怎麼樣,趕緊試一下吧

抓取知乎問題所有回答

簡單的介紹完了,接下來試一個有些難度的,抓取一個知乎問題的所有答案,包括回答者暱稱、贊同數量、回答內容。問題:為什麼鮮有炫富的程式設計師?

知乎的特點是,頁面向下滾動才會載入後面的回答

1、首先還是在 Chrome 中開啟這個連結,連結地址為:https://www.zhihu.com/question/30692237,並調出開發者工具,定位到 Web Scraper 標籤欄;

2、Create new sitemap,填寫 sitemap name 和 start url;

22.png

3、接下來,開始新增選擇器,點選 Add new selector;

4、先來分析一下知乎問題的結構,如圖,一個問題由多個這種區域組成,一個區域就是一個回答,這個回答區域包括了暱稱、贊同數、回答內容和釋出時間等。紅色框住的部分就是我們要抓取的內容。所以我們抓取資料的邏輯是這樣的:由入口頁進入,獲取當前頁面已載入的回答,找到一個回答區域,提取裡面的暱稱、贊同數、回答內容,之後依次向下執行,當已載入的區域獲取完成,模擬向下滾動滑鼠,載入後續的部分,一直迴圈往復,直到全部載入完畢;

23.png

5、內容結構的拓撲圖如下,_root 根節點下包含若干個回答區域,每個區域下包含暱稱、贊同數、回答內容;

24.png

6、按照上面這個拓撲圖,開始來建立選擇器,填寫 selector id 為 answer(隨意填),Type 選擇 Element scroll down 。解釋一下:Element 就是針對這種大範圍區域的,這個區域還要包含子元素,回答區域就對應 Element,因為要從這個區域獲取我們所需的資料,而 Element scroll down 是說這個區域利用向下滾動的方式可以載入更多出來,就是針對這種下拉載入的情況專門設計的。

25.png

7、接下來點選 Select,然後滑鼠到頁面上來,讓當綠色框框住一個回答區域後點選滑鼠,然後移動到下一個回答,同樣當綠色框框住一個回答區域後點選滑鼠。這時,除了這兩個回答外,所有的回答區域都變成了紅色框,然後點選"Done selecting!”,最後別忘了選擇 Multiple ,之後儲存;

26.gif

8、接下來,單擊紅色區域,進入剛剛建立的 answer 選擇器中,建立子選擇器;

27.png

9、建立暱稱選擇器,設定 id 為 name,Type 設定為 Text,Select 選擇暱稱部分,如果沒經驗的話,可能第一次選的不準,發現有錯誤,可以調整,儲存即可;

28.gif

10、建立贊同數選擇器;

29.gif

11、建立內容選擇器,由於內容是帶有格式的並且較長,所以有個技巧,從下面選擇會比較方便;

30.gif

12、執行 Scrape 操作,由於內容較多,可能需要幾分鐘的時間,如果是為了做測試,可以找一個回答數較少的問題做測試。

31.png

資源獲取

  • 在本公眾號內回覆「爬蟲」,獲取 Chrome 和 Web Scraper 擴充套件程式的安裝包
  • 在本公眾號內回覆 「sitemap」,獲取本文中抓取 hao123 和知乎的 sitemap 文字

獲取下來的 sitemap 是一段 json 文字,通過 Create new Sitemap 下的 Import Sitemap,然後輸入獲取到的 sitemap json 串,並起個名字,然後點選匯入按鈕即可。

32.png

33.png

最後,如果有什麼問題,可以在公眾號裡直接留言 或 加入討論群
公眾號:古時的風箏
掃碼關注
網頁資料抓取工具,webscraper 最簡單的資料抓取教程,人人都用得上

相關文章