網(wǎng)頁數(shù)據(jù)抓取工具,webscraper 最簡單的數(shù)據(jù)抓取教程,人人都用得上

Web Scraper 是一款免費(fèi)的,適用于普通用戶(不需要專業(yè) IT 技術(shù)的)的爬蟲工具,可以方便的通過鼠標(biāo)和簡單配置獲取你所想要數(shù)據(jù)。例如知乎回答列表、微博熱門、微博評論、電商網(wǎng)站商品信息、博客文章列表等等。

環(huán)境需求

這么簡單的工具當(dāng)然對環(huán)境的要求也很簡單了,只需要一臺能聯(lián)網(wǎng)的電腦,一個(gè)版本不是很低的 Chrome 瀏覽器,具體的版本要求是大于 31 ,當(dāng)然是越新越好了。目前 Chrome 的已經(jīng)是60多了,也就是說這個(gè)版本要求也不是很高。

安裝過程

  • 在線安裝方式

    在線安裝需要具有可翻墻網(wǎng)絡(luò),可訪問 Chrome 應(yīng)用商店

    1、在線訪問 web Scraper 插件 ,點(diǎn)擊 “添加至 CHROME”。

1.png

2、然后點(diǎn)擊彈出框中的“添加擴(kuò)展程序”

2.png

3、安裝完成后在頂部工具欄顯示 Web Scraper 的圖標(biāo)。

3.png
  • 本地安裝方式

    不能翻墻的可以使用本地翻墻方式,在本公眾號回復(fù)「爬蟲」,可下載 Chrome 和 Web Scraper 擴(kuò)展插件

    1、打開 Chrome,在地址欄輸入 chrome://extensions/ ,進(jìn)入擴(kuò)展程序管理界面,然后將下載好的擴(kuò)展插件 Web-Scraper_v0.3.7.crx 拖拽到此頁面,點(diǎn)擊“添加到擴(kuò)展程序”即可完成安裝。如圖:

4.gif

2、安裝完成后在頂部工具欄顯示 Web Scraper 的圖標(biāo)。

3.png

初識 web scraper

**打開 Web Scraper **

開發(fā)人員可以路過看后面了

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

Mac 系統(tǒng)下可以使用快捷鍵 command+option+i ;

也可以直接在 Chrome 界面上操作,點(diǎn)擊設(shè)置—>更多工具—>開發(fā)者工具

5.png

打開后的效果如下,其中綠色框部分是開發(fā)者工具的完整界面,紅色框部分是 Web Scraper 區(qū)域,也就是我們之后要操作的部分。

6.png

注意:如果打開開發(fā)者工具在瀏覽器的右側(cè)區(qū)域,則需要調(diào)節(jié)開發(fā)者工具位置到瀏覽器底部。

7.gif

原理及功能說明

我們抓取數(shù)據(jù)一般都是什么場景呢,如果只是零星的幾條數(shù)據(jù)或者特定的某條數(shù)據(jù)也就不值得用工具了,之所以用工具是因?yàn)橐康墨@取數(shù)據(jù),而用手工方式又太耗時(shí)費(fèi)力,甚至根本不能完成。例如抓取微博熱門前100條,當(dāng)然可以一頁一頁的翻,但是實(shí)在是太耗精力,再比如說知乎某個(gè)問題的所有答案,有的熱門問題回答數(shù)成千上萬,手工來,還是省省吧。

基于這樣的一種需求,一般可采用兩種方式采集這些數(shù)據(jù),一種叫“我們程序員的方式”,另一種叫“你們普通人的方式”。

“我們程序員的方式”是指開發(fā)人員會(huì)根據(jù)需求自己寫個(gè)爬蟲或者利用某個(gè)爬蟲框架,盯著屏幕狂敲代碼,根據(jù)需求的復(fù)雜程度,敲代碼的時(shí)長從一兩個(gè)小時(shí)到一兩天不等,當(dāng)然如果時(shí)間太長的話可能是因?yàn)樾枨筇珡?fù)雜,針對這種復(fù)雜的需求來說,普通人的方式或許也就行不通了。常用的爬蟲框架 Scrapy(Python)、WebMagic(Java)、Crawler4j(Java)。

這篇還是主要介紹“你們普通人的方式”,也就是 Web Scraper 這個(gè)工具,因?yàn)槠浣缑婧唵巍⒉僮骱唵危⑶铱蓪?dǎo)出 Excel 格式,不懂開發(fā)的同學(xué)也可以很快上手。而且對于一些簡單的需求,開發(fā)人員也沒必要自己實(shí)現(xiàn)個(gè)爬蟲,點(diǎn)幾下鼠標(biāo)畢竟要比敲半天代碼快吧。

數(shù)據(jù)爬取的思路一般可以簡單概括如下:

1、通過一個(gè)或多個(gè)入口地址,獲取初始數(shù)據(jù)。例如一個(gè)文章列表頁,或者具有某種規(guī)則的頁面,例如帶有分頁的列表頁;

2、根據(jù)入口頁面的某些信息,例如鏈接指向,進(jìn)入下一級頁面,獲取必要信息;

3、根據(jù)上一級的鏈接繼續(xù)進(jìn)入下一層,獲取必要信息(此步驟可以無限循環(huán)下去);

原理大致如此,接下來正式認(rèn)識一下 Web Scraper 這個(gè)工具,來,打開開發(fā)者工具,點(diǎn)到 Web Scraper 這個(gè)標(biāo)簽欄,看到分為三個(gè)部分:

8.png

Create new sitemap:首先理解 sitemap ,字面意思網(wǎng)站地圖,這里可以理解為一個(gè)入口地址,可以理解為其對應(yīng)一個(gè)網(wǎng)站,對應(yīng)一個(gè)需求,假設(shè)要獲取知乎上的一個(gè)問題的回答,就創(chuàng)建一個(gè) sitemap ,并將這個(gè)問題所在的地址設(shè)置為sitemap 的 Start URL,然后點(diǎn)擊 “Create Sitemap”即可創(chuàng)建一個(gè) sitemap。

9.png

Sitemaps:sitemap 的集合,所有創(chuàng)建過的 sitemap 都會(huì)在這里顯示,并且可以在這里進(jìn)入一個(gè) sitemap 進(jìn)行修改和數(shù)據(jù)抓取等操作。

10.png

Sitemap:進(jìn)入某個(gè) sitemap ,可以進(jìn)行一系列的操作,如下圖:

11.png

其中紅色框部分 Add new selector 是必不可少的步驟。selector 是什么呢,字面意思:選擇器,一個(gè)選擇器對應(yīng)網(wǎng)頁上的一部分區(qū)域,也就是包含我們要收集的數(shù)據(jù)的部分。

需要解釋一下,一個(gè) sitemap 下可以有多個(gè) selector,每個(gè) selector 有可以包含子 selector ,一個(gè) selector 可以只對應(yīng)一個(gè)標(biāo)題,也可以對應(yīng)一整個(gè)區(qū)域,此區(qū)域可能包含標(biāo)題、副標(biāo)題、作者信息、內(nèi)容等等信息。

Selectors:查看所有的選擇器。

Selector graph:查看當(dāng)前 sitemap 的拓?fù)浣Y(jié)構(gòu)圖,根節(jié)點(diǎn)是什么,包含幾個(gè)選擇器,選擇器下包含的子選擇器。

Edit metadata:可以修改 sitemap 信息,標(biāo)題和起始地址。

Scrape:開始數(shù)據(jù)抓取工作。

Export data as CSV:將抓取的數(shù)據(jù)以 CSV 格式導(dǎo)出。

到這里,有一個(gè)簡單的認(rèn)識就可以了,實(shí)踐出真知,具體的操作案例才具有說服力,下面就以幾個(gè)例子來說一說具體的用法。

案例實(shí)踐

簡單試水 hao123

由淺入深,先以一個(gè)最簡單的例子為入口,只是作為進(jìn)一步認(rèn)識 Web Scraper 服務(wù)

需求背景:看到下面 hao123 頁面中紅色框住的部分了吧,我們的需求就是統(tǒng)計(jì)這部分區(qū)域中的所有網(wǎng)站名稱和鏈接地址,最后以生成到 Excel 中。 因?yàn)檫@部分內(nèi)容足夠簡單,當(dāng)然真正的需求可能比這復(fù)雜,這么幾個(gè)數(shù)據(jù)手工統(tǒng)計(jì)的時(shí)間也很快。

12.png

開始操作

1、假設(shè)我們已經(jīng)打開了 hao123 頁面,并且在此頁面的底部打開了開發(fā)者工具,并且定位到了 Web Scraper 標(biāo)簽欄;

2、點(diǎn)擊“Create Sitemap”;

13.png

3、之后輸入 sitemap 名稱和 start url,名稱只為方便我們標(biāo)記,就命名為hao123(注意,不支持中文),start url 就是hao123的網(wǎng)址,然后點(diǎn)擊 create sitemap;

14.png

4、之后 Web Scraper 自動(dòng)定位到這個(gè) sitemap,接下來我們添加一個(gè)選擇器,點(diǎn)擊“add new selector”;

15.png

5、首先給這個(gè) selector 指定一個(gè) id,就是一個(gè)便于識別 名字而已,我這里命名為 hot。因?yàn)橐@取名稱和鏈接,所以將Type 設(shè)置為 Link,這個(gè)類型就是專門為網(wǎng)頁鏈接準(zhǔn)備的,選擇 Link 類型后,會(huì)自動(dòng)提取名稱和鏈接兩個(gè)屬性;

16.png

6、之后點(diǎn)擊 select ,然后我們在網(wǎng)頁上移動(dòng)光標(biāo),會(huì)發(fā)現(xiàn)光標(biāo)所到之處會(huì)有顏色變化,變成綠色的,表示就是我么當(dāng)前選擇的區(qū)域。我們將光標(biāo)定位到需求里說的那一欄的某個(gè)鏈接處,例如第一個(gè)頭條新聞,在此處單擊,這個(gè)部分就會(huì)變成紅色,說明已經(jīng)選中了,我們的目的是要選多個(gè),所以選中這個(gè)之后,繼續(xù)選第二個(gè),我們會(huì)發(fā)現(xiàn),這一行的鏈接都變成了紅色,沒錯(cuò),這就是我們要的效果。然后點(diǎn)擊"Done selecting!",最后別忘了勾選 Multiple ,表示要采集多條數(shù)據(jù);

17.png

7、最后保存,save selector。點(diǎn)擊Element preview 可以預(yù)覽選擇的區(qū)域,點(diǎn)擊 Data preview 可以在瀏覽器里預(yù)覽抓取的數(shù)據(jù)。 后面的文本框里的內(nèi)容,對于懂技術(shù)的同學(xué)來說很清楚,這就是 xpath,我們可以不通過鼠標(biāo)操作,直接手寫 xpath 也可以;

完整操作過程如下:

18.gif

8、上一步操作完,其實(shí)就可以導(dǎo)出了。先別急,看一下其他的操作,Sitemap hao123 下的 Selector graph,可以看出拓?fù)浣Y(jié)構(gòu)圖,_root 是根 selector ,創(chuàng)建一個(gè) sitemap 自動(dòng)會(huì)有一個(gè) _root 節(jié)點(diǎn),可以看到它的子 selector,就是我們創(chuàng)建的 hot selector;

19.png

9、Scrape ,開始抓取數(shù)據(jù)。

10、Sitemap hao123 下的 Browse ,可以通過瀏覽器直接查看抓取的最后結(jié)果,需要再;

20.png

11、最后,使用 Export data as CSV,以 CSV 格式導(dǎo)出,其中 hot 列是標(biāo)題,hot-href 列是鏈接;

21.png

怎么樣,趕緊試一下吧

抓取知乎問題所有回答

簡單的介紹完了,接下來試一個(gè)有些難度的,抓取一個(gè)知乎問題的所有答案,包括回答者昵稱、贊同數(shù)量、回答內(nèi)容。問題:為什么鮮有炫富的程序員?

知乎的特點(diǎn)是,頁面向下滾動(dòng)才會(huì)加載后面的回答

1、首先還是在 Chrome 中打開這個(gè)鏈接,鏈接地址為:https://www.zhihu.com/question/30692237,并調(diào)出開發(fā)者工具,定位到 Web Scraper 標(biāo)簽欄;

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

22.png

3、接下來,開始添加選擇器,點(diǎn)擊 Add new selector;

4、先來分析一下知乎問題的結(jié)構(gòu),如圖,一個(gè)問題由多個(gè)這種區(qū)域組成,一個(gè)區(qū)域就是一個(gè)回答,這個(gè)回答區(qū)域包括了昵稱、贊同數(shù)、回答內(nèi)容和發(fā)布時(shí)間等。紅色框住的部分就是我們要抓取的內(nèi)容。所以我們抓取數(shù)據(jù)的邏輯是這樣的:由入口頁進(jìn)入,獲取當(dāng)前頁面已加載的回答,找到一個(gè)回答區(qū)域,提取里面的昵稱、贊同數(shù)、回答內(nèi)容,之后依次向下執(zhí)行,當(dāng)已加載的區(qū)域獲取完成,模擬向下滾動(dòng)鼠標(biāo),加載后續(xù)的部分,一直循環(huán)往復(fù),直到全部加載完畢;

23.png

5、內(nèi)容結(jié)構(gòu)的拓?fù)鋱D如下,_root 根節(jié)點(diǎn)下包含若干個(gè)回答區(qū)域,每個(gè)區(qū)域下包含昵稱、贊同數(shù)、回答內(nèi)容;

24.png

6、按照上面這個(gè)拓?fù)鋱D,開始來創(chuàng)建選擇器,填寫 selector id 為 answer(隨意填),Type 選擇 Element scroll down 。解釋一下:Element 就是針對這種大范圍區(qū)域的,這個(gè)區(qū)域還要包含子元素,回答區(qū)域就對應(yīng) Element,因?yàn)橐獜倪@個(gè)區(qū)域獲取我們所需的數(shù)據(jù),而 Element scroll down 是說這個(gè)區(qū)域利用向下滾動(dòng)的方式可以加載更多出來,就是針對這種下拉加載的情況專門設(shè)計(jì)的。

25.png

7、接下來點(diǎn)擊 Select,然后鼠標(biāo)到頁面上來,讓當(dāng)綠色框框住一個(gè)回答區(qū)域后點(diǎn)擊鼠標(biāo),然后移動(dòng)到下一個(gè)回答,同樣當(dāng)綠色框框住一個(gè)回答區(qū)域后點(diǎn)擊鼠標(biāo)。這時(shí),除了這兩個(gè)回答外,所有的回答區(qū)域都變成了紅色框,然后點(diǎn)擊"Done selecting!”,最后別忘了選擇 Multiple ,之后保存;

26.gif

8、接下來,單擊紅色區(qū)域,進(jìn)入剛剛創(chuàng)建的 answer 選擇器中,創(chuàng)建子選擇器;

27.png

9、創(chuàng)建昵稱選擇器,設(shè)置 id 為 name,Type 設(shè)置為 Text,Select 選擇昵稱部分,如果沒經(jīng)驗(yàn)的話,可能第一次選的不準(zhǔn),發(fā)現(xiàn)有錯(cuò)誤,可以調(diào)整,保存即可;

28.gif

10、創(chuàng)建贊同數(shù)選擇器;

29.gif

11、創(chuàng)建內(nèi)容選擇器,由于內(nèi)容是帶有格式的并且較長,所以有個(gè)技巧,從下面選擇會(huì)比較方便;

30.gif

12、執(zhí)行 Scrape 操作,由于內(nèi)容較多,可能需要幾分鐘的時(shí)間,如果是為了做測試,可以找一個(gè)回答數(shù)較少的問題做測試。

31.png

資源獲取

  • 在本公眾號內(nèi)回復(fù)「爬蟲」,獲取 Chrome 和 Web Scraper 擴(kuò)展程序的安裝包
  • 在本公眾號內(nèi)回復(fù) 「sitemap」,獲取本文中抓取 hao123 和知乎的 sitemap 文本

獲取下來的 sitemap 是一段 json 文本,通過 Create new Sitemap 下的 Import Sitemap,然后輸入獲取到的 sitemap json 串,并起個(gè)名字,然后點(diǎn)擊導(dǎo)入按鈕即可。

32.png
33.png

最后,如果有什么問題,可以在公眾號里直接留言或回復(fù)
點(diǎn)擊查看文章
公眾號:古時(shí)的風(fēng)箏

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內(nèi)容