日常學(xué)習(xí)工作中,我們多多少少都會(huì)遇到一些數(shù)據(jù)爬取的需求娩梨,比如說(shuō)寫(xiě)論文時(shí)要收集相關(guān)課題下的論文列表,運(yùn)營(yíng)活動(dòng)時(shí)收集用戶評(píng)價(jià)览徒,競(jìng)品分析時(shí)收集友商數(shù)據(jù)狈定。
當(dāng)我們著手準(zhǔn)備收集數(shù)據(jù)時(shí),面對(duì)低效的復(fù)制黏貼工作习蓬,一般都會(huì)萌生一個(gè)想法:我要是會(huì)爬蟲(chóng)就好了纽什,分分鐘就把數(shù)據(jù)爬取下來(lái)了《愕穑可是當(dāng)我們搜索相關(guān)教程時(shí)芦缰,往往會(huì)被高昂的學(xué)習(xí)成本所勸退。拿現(xiàn)在最通用的 python 爬蟲(chóng)來(lái)說(shuō)枫慷,對(duì)于小白來(lái)說(shuō)往往要跨過(guò)下面幾座大山:
- 學(xué)習(xí)一門編程語(yǔ)言:python
- 學(xué)習(xí)網(wǎng)頁(yè)的基礎(chǔ)構(gòu)成——HTML 標(biāo)簽和 CSS 選擇器让蕾,有時(shí)候還要了解一些 JavaScript
- 學(xué)習(xí)網(wǎng)絡(luò)通信的基礎(chǔ)協(xié)議——HTTP 協(xié)議
- 學(xué)習(xí) python 中常見(jiàn)的爬蟲(chóng)框架和解析庫(kù)
- ......
上面的知識(shí)點(diǎn),沒(méi)有幾個(gè)月是掌握不完的或听。而且對(duì)于非強(qiáng)需求的人來(lái)說(shuō)探孝,這么多的知識(shí)點(diǎn),你還會(huì)時(shí)時(shí)刻刻和遺忘做斗爭(zhēng)誉裆。
那么有沒(méi)有不學(xué) python 也能爬取數(shù)據(jù)的利器呢顿颅?結(jié)合文章標(biāo)題,我想你已經(jīng)知道我要安利什么了足丢。今天我要推薦的就是Web Scraper粱腻,一個(gè)輕量的數(shù)據(jù)爬蟲(chóng)利器。
Web Scraper 的優(yōu)點(diǎn)就是對(duì)新手友好斩跌,在最初抓取數(shù)據(jù)時(shí)绍些,把底層的編程知識(shí)和網(wǎng)頁(yè)知識(shí)都屏蔽了,可以非程鲜唬快的入門遇革,只需要鼠標(biāo)點(diǎn)選幾下卿闹,幾分鐘就可以搭建一個(gè)自定義的爬蟲(chóng)揭糕。
我在過(guò)去的半年里萝快,寫(xiě)了很多篇關(guān)于 Web Scraper 的教程,本文類似于一篇導(dǎo)航文章著角,把爬蟲(chóng)的注意要點(diǎn)和我的教程連接起來(lái)揪漩。最快一個(gè)小時(shí),最多一個(gè)下午吏口,就可以掌握 Web Scraper 的使用奄容,輕松應(yīng)對(duì)日常生活中的數(shù)據(jù)爬取需求。
插件安裝
Web Scraper 作為一個(gè) Chrome 插件产徊,網(wǎng)絡(luò)條件良好的用戶可以直接上chrome 網(wǎng)上應(yīng)用店安裝昂勒,不太好的用戶可以下載插件安裝包手動(dòng)安裝,具體的安裝流程可以看我的教程:Web Scraper 的下載與安裝舟铜。
常見(jiàn)網(wǎng)頁(yè)的類型
結(jié)合我的數(shù)據(jù)爬取經(jīng)驗(yàn)和讀者反饋戈盈,我一般把網(wǎng)頁(yè)分為三大類型:單頁(yè)、分頁(yè)列表和篩選表單谆刨。
1.單頁(yè)
單頁(yè)是最常見(jiàn)的網(wǎng)頁(yè)類型塘娶。
我們?nèi)粘i喿x的文章,推文的詳情頁(yè)都可以歸于這種類型痊夭。作為網(wǎng)頁(yè)里最簡(jiǎn)單最常見(jiàn)的類型刁岸,Web Scraper 教程里第一篇爬蟲(chóng)實(shí)戰(zhàn)就拿豆瓣電影作為案例,入門 Web Scraper 的基礎(chǔ)使用她我。
2.分頁(yè)列表
分頁(yè)列表也是非常常見(jiàn)的網(wǎng)頁(yè)類型虹曙。
互聯(lián)網(wǎng)的資源可以說(shuō)是無(wú)限的,當(dāng)我們?cè)L問(wèn)一個(gè)網(wǎng)站時(shí)番舆,不可能一次性把所有的資源都加載到瀏覽器里「酰現(xiàn)在的主流做法是先加載一部分?jǐn)?shù)據(jù),隨著用戶的交互操作(滾動(dòng)合蔽、篩選击敌、分頁(yè))才會(huì)加載下一部分?jǐn)?shù)據(jù)。
教程里我費(fèi)了較大的筆墨去講解 Web Scraper 如何爬取不同分頁(yè)類型網(wǎng)站的數(shù)據(jù)拴事,因?yàn)閮?nèi)容較多沃斤,我放在本文的下一節(jié)詳細(xì)介紹。
3.篩選表單
表單類型的網(wǎng)頁(yè)在 PC 網(wǎng)站上比較常見(jiàn)刃宵。
這種網(wǎng)頁(yè)的最大特點(diǎn)就是有很多篩選項(xiàng)衡瓶,不同的選擇會(huì)加載不同的數(shù)據(jù),組合多變牲证,交互較為復(fù)雜哮针。比如說(shuō)淘寶的購(gòu)物篩選頁(yè)。
比較遺憾的是,Web Scraper 對(duì)復(fù)雜篩選頁(yè)的支持不是很好十厢,如果篩選條件可以反映在 URL 鏈接上就可以爬取相關(guān)數(shù)據(jù)等太,如果不能就無(wú)法爬取篩選后的數(shù)據(jù)。
常見(jiàn)的分頁(yè)類型
分頁(yè)列表是很常見(jiàn)的網(wǎng)頁(yè)類型蛮放。根據(jù)加載新數(shù)據(jù)時(shí)的交互缩抡,我把分頁(yè)列表分為 3 大類型:滾動(dòng)加載、分頁(yè)器加載和點(diǎn)擊下一頁(yè)加載包颁。
1.滾動(dòng)加載
我們?cè)谒⑴笥讶λ⑽⒉┑臅r(shí)候瞻想,總會(huì)強(qiáng)調(diào)一個(gè)『刷』字,因?yàn)榭磩?dòng)態(tài)的時(shí)候娩嚼,當(dāng)把內(nèi)容拉到屏幕末尾的時(shí)候蘑险,APP 就會(huì)自動(dòng)加載下一頁(yè)的數(shù)據(jù),從體驗(yàn)上來(lái)看岳悟,數(shù)據(jù)會(huì)源源不斷的加載出來(lái)漠其,永遠(yuǎn)沒(méi)有盡頭。
Web Scraper 有一個(gè)選擇器類型叫 Element scroll down
竿音,意如其名和屎,就是滾動(dòng)到底部加載的意思。利用這個(gè)選擇器春瞬,就可以抓取滾動(dòng)加載類型的網(wǎng)頁(yè)柴信,具體的操作可以見(jiàn)教程:Web Scraper 抓取「滾動(dòng)加載」類型網(wǎng)頁(yè)。
2.分頁(yè)器加載
分頁(yè)器加載數(shù)據(jù)的網(wǎng)頁(yè)在 PC 網(wǎng)頁(yè)上非常常見(jiàn)宽气,點(diǎn)擊相關(guān)頁(yè)碼就能跳轉(zhuǎn)到對(duì)應(yīng)網(wǎng)頁(yè)随常。
Web Scraper 也可以爬取這種類型的網(wǎng)頁(yè)。相關(guān)的教程可見(jiàn): Web Scraper 控制鏈接分頁(yè)萄涯、Web Scraper 抓取分頁(yè)器類型網(wǎng)頁(yè) 和 Web Scraper 利用 Link 選擇器翻頁(yè)绪氛。
3.點(diǎn)擊下一頁(yè)加載
點(diǎn)擊下一頁(yè)按鈕加載數(shù)據(jù)其實(shí)可以算分頁(yè)器加載的一種,相當(dāng)于把分頁(yè)器中的「下一頁(yè)」按鈕單獨(dú)拿出來(lái)自成一派涝影。
這種網(wǎng)頁(yè)需要我們手動(dòng)點(diǎn)擊加載按鈕來(lái)加載新的數(shù)據(jù)枣察。Web Scraper 可以 Element click
選擇器抓取這種分頁(yè)網(wǎng)頁(yè),相關(guān)教程可見(jiàn):Web Scraper 點(diǎn)擊「下一頁(yè)」按鈕翻頁(yè)燃逻。
進(jìn)階使用
學(xué)習(xí)了上面列出的幾篇教程序目,Web Scraper 這個(gè)插件 60% 的功能基本上就掌握了。下面是一些進(jìn)階內(nèi)容伯襟,掌握了可以更高效的抓取數(shù)據(jù)猿涨。
1.列表頁(yè) + 詳情頁(yè)
互聯(lián)網(wǎng)資訊最常見(jiàn)的架構(gòu)就是「列表頁(yè) + 詳情頁(yè)」的組合結(jié)構(gòu)了。
列表頁(yè)是內(nèi)容的標(biāo)題和摘要姆怪,詳情頁(yè)是詳細(xì)說(shuō)明叛赚。有時(shí)候我們需要同時(shí)抓取列表頁(yè)和詳情頁(yè)的數(shù)據(jù)澡绩,Web Scraper 也支持這種常見(jiàn)的需求。我們可以利用 Web Scraper 的 Link 選擇器來(lái)抓取這種組合網(wǎng)頁(yè)俺附,具體操作可以看教程:Web Scraper 抓取二級(jí)網(wǎng)面肥卡。
2.HTML 標(biāo)簽與 CSS 選擇器
我在前面說(shuō)了 Web Scraper 屏蔽了一些網(wǎng)頁(yè)知識(shí),比如說(shuō) HTML 和 CSS 的一些內(nèi)容昙读,只需要簡(jiǎn)單的鼠標(biāo)點(diǎn)選就可以搭建一個(gè)自定義爬蟲(chóng)召调。但是如果我們花半個(gè)小時(shí)了解一些基礎(chǔ)的 HTML 和 CSS 知識(shí)膨桥,其實(shí)可以更好的使用 Web Scraper蛮浑。所以我專門寫(xiě)了一篇介紹 CSS 選擇器的文章,十分鐘讀下來(lái)可以上手自定義 CSS 選擇器只嚣。
3.正則表達(dá)式的使用
Web Scraper 其實(shí)是一款專注于文本爬取的爬蟲(chóng)工具沮稚。如果你日常工作中經(jīng)常和文本打交道,或者使用過(guò)一些效率工具册舞,那你一定聽(tīng)說(shuō)過(guò)正則表達(dá)式蕴掏。沒(méi)錯(cuò),Web Scraper 也支持基礎(chǔ)的正則表達(dá)式调鲸,用來(lái)篩選和過(guò)濾爬取的文本盛杰,我也寫(xiě)了一篇文章介紹正則表達(dá)式,如果爬取過(guò)程中使用它藐石,可以節(jié)省不少數(shù)據(jù)清洗的時(shí)間即供。
4.Sitemap 的導(dǎo)入和導(dǎo)出
SItemap 是個(gè)什么東西?其實(shí)它就是我們操作 Web Scraper 后生成的配置文件于微,相當(dāng)于 python 爬蟲(chóng)的源代碼逗嫡。我們可以通過(guò)分享 Sitemap 來(lái)分享我們制作的爬蟲(chóng),相關(guān)操作我也寫(xiě)了教程:Web Scraper 導(dǎo)入導(dǎo)出爬蟲(chóng)配置株依。
5.換一個(gè)存儲(chǔ)數(shù)據(jù)庫(kù)
Web Scraper 導(dǎo)出數(shù)據(jù)時(shí)有一個(gè)缺點(diǎn)驱证,默認(rèn)使用瀏覽器的 localStorage 存儲(chǔ)數(shù)據(jù),導(dǎo)致存儲(chǔ)的數(shù)據(jù)是亂序的恋腕。這種情況可以通過(guò) Excel 等軟件進(jìn)行排序抹锄,也可以通過(guò)換一個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)的方式來(lái)解決。
Web Scraper 支持 CouchDB 數(shù)據(jù)庫(kù)荠藤,配置成功后導(dǎo)出的數(shù)據(jù)就是正序了祈远。相關(guān)的配置過(guò)程可以看我寫(xiě)的教程:Web Scraper 使用 CouchDB。
Web Scraper 的優(yōu)點(diǎn)
- 輕量:非常的輕量商源。上手只需要一個(gè) Chrome 瀏覽器和一個(gè) Web Scraper 插件车份。對(duì)于一些限制安裝第三方軟件的公司電腦,可以很輕易的突破這層限制
- 提效:Web Scraper 支持絕大多數(shù)的網(wǎng)頁(yè)的爬取牡彻,可以無(wú)侵入的加入你的日常工作流中
- 快:抓取速度取決于你的網(wǎng)速與瀏覽器加載速度扫沼,其他的數(shù)據(jù)采集軟件可能有限速現(xiàn)象(充錢就能不限速)
Web Scraper 的缺點(diǎn)
- 只支持文本數(shù)據(jù)抓取:圖片短視頻等多媒體數(shù)據(jù)無(wú)法批量抓取
- 不支持范圍抓取:例如一個(gè)網(wǎng)頁(yè)有 1000 條數(shù)據(jù)出爹,默認(rèn)是全量抓取的,無(wú)法配置抓取范圍缎除。想停止抓取严就,只能斷網(wǎng)模擬數(shù)據(jù)加載完畢的情況
- 不支持復(fù)雜網(wǎng)頁(yè)抓取:對(duì)于那些加了復(fù)雜交互、酷炫的特效和反人類的反爬蟲(chóng)網(wǎng)頁(yè)器罐,Web Scraper 無(wú)能為力(其實(shí)這種網(wǎng)頁(yè)寫(xiě) python 爬蟲(chóng)也挺頭疼)
- 導(dǎo)出數(shù)據(jù)亂序:想讓數(shù)據(jù)正序就得用 Excel 或者用 CouchDB梢为,相對(duì)復(fù)雜了一些
總結(jié)
掌握了 Web Scraper 的使用,基本上可以應(yīng)付學(xué)習(xí)工作中 90% 的數(shù)據(jù)爬取需求轰坊。相對(duì)于 python 爬蟲(chóng)铸董,雖然靈活度上受到了限制,但是低廉的學(xué)習(xí)成本可以大大節(jié)省學(xué)習(xí)時(shí)間肴沫,快速解決手頭的工作粟害,提高整體的工作效率。綜合來(lái)看颤芬,Web Scraper 還是非常值得去學(xué)習(xí)的悲幅。