圖文|娘酷
第一次知道Web Scraper, 是在 知乎用戶@陳大欣 在?零基礎(chǔ)如何學(xué)爬蟲技術(shù)辽聊?的答案中看見的。跟著答案試了一試牙言,內(nèi)心的驚喜無以言表!9值谩咱枉!
我的天哪居然還有這么方便就可以抓取網(wǎng)頁的軟件,那我還學(xué)什么代碼M搅怠2隙稀(暴風哭泣
不需要會爬蟲,不需要懂網(wǎng)頁結(jié)構(gòu)入挣,不需要會編程亿乳,分分鐘收集網(wǎng)頁數(shù)據(jù),新大陸啊朋友們>斗ぁ葛假!簡直太適合我這個懶惰的皮皮蝦了!匠璧!
當然桐款,你可以使用任何你熟悉的語言去編寫一個爬蟲,但是當數(shù)據(jù)量很少只需要抓幾千條或者幾百條的時候夷恍,寫代碼的時間都可以手動復(fù)制黏貼出來了,于是就完全沒有必要了媳维。
由于大欣的介紹是針對網(wǎng)址帶頁碼的網(wǎng)頁的酿雪,接下來我將更深入具體介紹一下靜態(tài)網(wǎng)頁和不同的動態(tài)加載情況下該如何用Web Scraper來偷懶爬到我們想要的內(nèi)容。如有不對的地方侄刽,請各位不要客氣的指教指黎。
Web Scraper 是什么??
Web Scraper 是一個 Chrome 谷歌瀏覽器的插件:http://webscraper.io/
這是一個可視化的抓數(shù)據(jù)的工具州丹〈装玻可視化意味著,你只需要知道你要的對象是什么墓毒,在網(wǎng)頁上的哪里吓揪,鼠標移到目標上單擊,就完成了全部的操作所计。它的工作原理是模擬人在瀏覽器上的操作并重復(fù)這一動作直至所有指定目標被收集結(jié)束柠辞。
裝上 webscraper.io 提供的的插件之后,打開 Chrome 的 Developer Tool主胧,會看到一個 Web Scraper 標簽叭首。Shift+Ctrl+I 喚出開發(fā)者工具就可以使用了习勤。將開發(fā)者工具置底(在開發(fā)者工具的右上角可以選擇放置方式)
準備工作就緒,它就可以指哪爬哪了焙格。接下來介紹一些WS的基本套路
基本套路
以我的簡書關(guān)注列表為例图毕,我想要收集我都關(guān)注了誰,僅需要他們的網(wǎng)名
新建:打開開發(fā)者工具 -> 選擇Web Scraper -> "Create New Sitemap" -> "Create Sitemap" ->給你的蟲子取個名字然后把目標網(wǎng)頁地址放進去(名稱必須為小寫英文字母),我們就把這個爬蟲命名為“niangkufollwers”?
添加對象:單擊Add New Selector予颤,Selector即你想收集的目標信息,此處我們先僅收集關(guān)注者的名稱厢破∪偕“id”處給對象取個名字,“Type”選擇Text(收集的人名是文本屬性)摩泪,“Selector”處點擊“Select”按鈕后笆焰,將鼠標移到頁面上,移過之處會變成綠色见坑,單擊目標后會變成紅色嚷掠。此處單擊“國學(xué)上官清晨”和“談心社”兩個名字后,頁面上的其他相同類型的數(shù)據(jù)也會被自動圈起荞驴。該頁被選中多個網(wǎng)名不皆,記得勾選multiple,Done Selecting! -> Save Selector
啟動爬蟲熊楼!:Sitemap(niangkufollowers) -> Scrape
導(dǎo)出數(shù)據(jù)(EXPORT):Sitemap(niangkufollwers) -> Export data as CSV? 鲫骗。CSV格式的文件排版可能亂犬耻,需要打開再整理一下。同時你編寫的這個Sitemap也可以導(dǎo)出成語句發(fā)給別人使用执泰,你也可以使用別人編寫的蟲蟲枕磁。
試試看下面的這個, 在Create New Sitemap -> import sitemap下導(dǎo)入。
{"startUrl":"http://www.reibang.com/users/f354e815185f/following","selectors":[{"parentSelectors":["_root"],"type":"SelectorElement","multiple":true,"id":"element","selector":"ul.user-list li","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"name","selector":"a.name","regex":"","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"following","selector":"div.meta span:nth-of-type(1)","regex":"","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"follower","selector":"span:nth-of-type(2)","regex":"","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"posts","selector":"span:nth-of-type(3)","regex":"","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"counts","selector":"div.meta:nth-of-type(2)","regex":"","delay":""}],"_id":"ningkufollowers"}
層級圖
導(dǎo)入上面的sitemap后术吝,層級圖在sitemap(niangkufollwers) -> selector graph 中查看
層級圖可以很好的幫助我們整理目標對象的包含與被包含關(guān)系计济。element是我設(shè)置的一級對象,name排苍,following等是我設(shè)置的二級對象沦寂。當要收集的對象包含多維度的數(shù)據(jù)時,如:關(guān)注者列表中的每個網(wǎng)友的相關(guān)信息纪岁,評論列表中的每條留言的相關(guān)信息凑队。梳理目標層級關(guān)系有助于我們進行更復(fù)雜的數(shù)據(jù)收集。
下一章,我將介紹一些處理多層級的進階套路漩氨。