在工作中,幾乎每個(gè)崗位都會(huì)涉及到數(shù)據(jù)收集的任務(wù)造锅。收集本地所有裝修公司的名單撼唾,收集某個(gè)APP的所有評(píng)論,收集網(wǎng)上所有與**相關(guān)的文章哥蔚,批量下載某網(wǎng)站的指定文件……
不會(huì)編程倒谷,不懂爬蟲技術(shù)的我,曾經(jīng)遇到這種工作肺素,要么苦逼的CTRL+C,CTRL+V恨锚,要么賠著笑求技術(shù)人員幫忙爬取數(shù)據(jù)脚粟。直到我遇到web scraper這個(gè)神器梅肤,無需編程經(jīng)驗(yàn)掏颊,簡(jiǎn)單幾步設(shè)置后,幾分鐘就能快速收集上千條數(shù)據(jù)柜砾,效率高到飛起蛙紫。
web scraper是一個(gè)谷歌爬蟲插件毒费,使用起來非常簡(jiǎn)單界弧,30分鐘即可完全掌握。web scraper插件會(huì)將數(shù)據(jù)爬取出來生成excel表格办桨,供我們使用筹淫。
那么這款插件到底要怎么用呢?
爬取數(shù)據(jù)的基本流程
step1:下載和安裝web scraper插件呢撞。
下載地址:鏈接: http://pan.baidu.com/s/1qXVbqUg 密碼: t7bm
安裝方法:參考百度經(jīng)驗(yàn)文章http://jingyan.baidu.com/article/da1091fbdf12e9027949d673.html
step2:創(chuàng)建一個(gè)新的數(shù)據(jù)爬取站點(diǎn)损姜。
首先按F12(或者點(diǎn)擊鼠標(biāo)右鍵--檢查)調(diào)出控制臺(tái),點(diǎn)擊“Web Scraper”切換到爬蟲插件功能殊霞,點(diǎn)擊create new sitemap進(jìn)入新的數(shù)據(jù)爬取站點(diǎn)創(chuàng)建頁面摧阅。
sitemap name可以自定義,但一定要是英文绷蹲。start url是我們要爬取的網(wǎng)站網(wǎng)址棒卷,這里我們爬取豆瓣網(wǎng)上上海近一周的同城活動(dòng),將如下鏈接復(fù)制到start url輸入框中祝钢,然后點(diǎn)擊“create sitemap”確定創(chuàng)建比规。https://shanghai.douban.com/events/week-all?start=0
step3:選擇需要提取的頁面元素
上一步創(chuàng)建成功之后,頁面會(huì)跳轉(zhuǎn)到如下界面拦英,這時(shí)我們點(diǎn)擊“add new selector”創(chuàng)建一個(gè)新的選擇器蜒什。
以提取該頁面活動(dòng)標(biāo)題為例,設(shè)置ID為“title”(此處可以自定義疤估,將會(huì)成為excel中的表頭)吃谣,type為“text”。
selector指的是頁面中需要提取的數(shù)據(jù)區(qū)域做裙。點(diǎn)擊select,鼠標(biāo)在網(wǎng)頁上滑動(dòng)肃晚,會(huì)出現(xiàn)綠色區(qū)域锚贱,表示這些區(qū)域的數(shù)據(jù)我們是可以選擇的。
選中一個(gè)活動(dòng)標(biāo)題关串,這個(gè)區(qū)域會(huì)被紅色邊框包圍拧廊,再繼續(xù)選中下一個(gè)活動(dòng)標(biāo)題。當(dāng)選中兩個(gè)相同區(qū)域時(shí)晋修,插件會(huì)自動(dòng)選中該頁面上其他的同類元素吧碾。點(diǎn)擊“Done selecting!”確定選中。
我們可以點(diǎn)擊“Element preview”查看頁面上被選中的所有區(qū)域墓卦,點(diǎn)擊“Data preview”預(yù)覽爬蟲將獲取到的數(shù)據(jù)倦春。
注意:由于我們要選擇這個(gè)頁面上的所有活動(dòng)標(biāo)題,因此需要將”Multiple“復(fù)選框選中。剩下的內(nèi)容可以保持默認(rèn)睁本,點(diǎn)擊”Save selector“保存這個(gè)選擇器尿庐。
到這里,我們就選擇好了需要提取的頁面元素呢堰,如下圖所示抄瑟。
step4:開始爬取數(shù)據(jù)
點(diǎn)擊scrape,進(jìn)入數(shù)據(jù)爬取啟動(dòng)頁面枉疼。
設(shè)置request interval 和page load delay時(shí)間皮假,點(diǎn)擊”Start scraping“開始爬取數(shù)據(jù)。這里的時(shí)間間隔主要是為了避免因操作太頻繁導(dǎo)致爬蟲被屏蔽骂维,無法正常爬取惹资。一般的網(wǎng)站默認(rèn)時(shí)間間隔就可以,有些網(wǎng)站可能需要設(shè)置大一點(diǎn)的時(shí)間間隔席舍。
開始后布轿,會(huì)打開一個(gè)目標(biāo)網(wǎng)址的窗口,爬蟲根據(jù)提取設(shè)置好的規(guī)則一一爬取来颤,當(dāng)爬取完畢后汰扭,窗口會(huì)自動(dòng)關(guān)閉。
step5:下載數(shù)據(jù)
點(diǎn)擊”Export data as CSV“跳轉(zhuǎn)到excel數(shù)據(jù)下載頁面福铅,點(diǎn)擊”download now"即可下載萝毛。
以上五步就是使用web scraper爬取數(shù)據(jù)的全部流程和操作。無論是多復(fù)雜的數(shù)據(jù)滑黔,都可以按照這樣的流程和操作爬取到對(duì)應(yīng)的數(shù)據(jù)笆包。
進(jìn)階操作
1,如何一次性爬取一組數(shù)據(jù)略荡?
剛剛我們僅僅爬取了活動(dòng)主題庵佣,如果我們要同時(shí)爬取活動(dòng)主題和活動(dòng)時(shí)間,應(yīng)該怎么處理呢汛兜?
從上圖中可以看到數(shù)據(jù)的結(jié)構(gòu)巴粪,活動(dòng)主題和活動(dòng)時(shí)間同時(shí)被包含在最外層的方框中,因此在設(shè)置選擇器的時(shí)候粥谬,先創(chuàng)建一個(gè)大的選擇器肛根,讓活動(dòng)主題和活動(dòng)內(nèi)容同時(shí)被包含起來。
注意這里的Type要設(shè)置成“Element”.保存后點(diǎn)擊剛才創(chuàng)建的內(nèi)容(下圖紅框的位置)進(jìn)入子頁漏策。
然后在這個(gè)頁面分別創(chuàng)建標(biāo)題選擇器和時(shí)間選擇器派哲。其類型都是text。現(xiàn)在頁面的可選區(qū)域被局限在了list這個(gè)區(qū)域掺喻,因此你只需要點(diǎn)擊一次活動(dòng)標(biāo)題芭届,確定選中即可储矩。不用勾選“Multiple”。
只有創(chuàng)建一個(gè)element選擇器將活動(dòng)主題和活動(dòng)時(shí)間包含起來喉脖,爬取到的數(shù)據(jù)才會(huì)一一對(duì)應(yīng)的呈現(xiàn)出來椰苟。
2,如何一次性爬取多頁內(nèi)容树叽?
這里根據(jù)分頁形式的不同舆蝴,有不同的解決辦法。
1)固定分頁情況下
可以注意到豆瓣同城活動(dòng)的頁面時(shí)做了分頁的题诵,每頁顯示10條數(shù)據(jù)洁仗。那么如果我們要爬取前10頁的數(shù)據(jù),應(yīng)該怎么做呢性锭?
仔細(xì)觀察赠潦,會(huì)發(fā)現(xiàn)第一頁的網(wǎng)址和第二頁的網(wǎng)址是有區(qū)別的。
第一頁:https://shanghai.douban.com/events/week-all?start=0
第二頁:https://shanghai.douban.com/events/week-all?start=10
start=后面的數(shù)字是差為10的等差數(shù)列草冈。
那么我們?cè)谠O(shè)置數(shù)據(jù)爬取站點(diǎn)的時(shí)候她奥,用[0-100:10]替代具體的數(shù)字,表示數(shù)據(jù)爬取的頁面區(qū)間怎棱。即:https://shanghai.douban.com/events/week-all?start=[0-100:10]
如果網(wǎng)址的等差是1哩俭,例如知乎問題的網(wǎng)址:
第一頁:https://www.zhihu.com/topic/19551325/top-answers?page=1
第二頁:https://www.zhihu.com/topic/19551325/top-answers?page=2
則省略冒號(hào)和后面的等差,只寫頁碼區(qū)間拳恋。如https://www.zhihu.com/topic/19551325/top-answers?page=[1-10]
表示知乎話題第一頁到第十頁凡资。
處理這種數(shù)據(jù)的要點(diǎn)就是觀察不同頁面網(wǎng)址的變化,然后將頁碼區(qū)間寫入網(wǎng)址中谬运。
2)滾動(dòng)鼠標(biāo)自動(dòng)加載
目前很多網(wǎng)站采取了滾動(dòng)到底部后自動(dòng)加載數(shù)據(jù)的方式隙赁,其網(wǎng)址并沒有任何變化。如知乎live主頁的數(shù)據(jù)加載方式梆暖。https://www.zhihu.com/lives/
這時(shí)我們需要在創(chuàng)建element選擇器的時(shí)候伞访,設(shè)置Type為“Element scroll down”。這樣爬蟲工作的時(shí)候會(huì)自動(dòng)執(zhí)行滾動(dòng)操作轰驳,不停的爬取咐扭,直到?jīng)]有可加載的數(shù)據(jù)為止。
3)點(diǎn)擊頁面底部“加載更多”按鈕
在設(shè)置外層element元素的時(shí)候滑废,設(shè)置Type類型為“Element click”,然后點(diǎn)擊“Click selector”的“Select”按鈕選中頁面上的加載更多按鈕或者圖標(biāo)。
為了讓頁面持續(xù)不斷的加載袜爪,設(shè)置“Click type”為“Click more”蠕趁,多次點(diǎn)擊。
接下來設(shè)置停止點(diǎn)擊的條件辛馆,當(dāng)這個(gè)區(qū)域的文本內(nèi)容或者HTML結(jié)構(gòu)或者顯示樣式發(fā)生改變時(shí)俺陋,不再點(diǎn)擊豁延。
比如說當(dāng)加載完畢之后,“加載更多”按鈕文字改變?yōu)椤耙鸭虞d完畢”腊状,那么這里選擇Unique Text;如果加載到最后诱咏,這個(gè)按鈕顏色變灰,就選擇Unique CSS Selector缴挖。
3袋狞,如何批量爬取并下載圖片?
設(shè)置Type為image映屋,插件將爬取到所有圖片的鏈接苟鸯。下載圖片有兩種方式,一種是直接勾選Download image棚点,這樣爬蟲在爬取的時(shí)候就會(huì)自動(dòng)下載早处。或者在爬取到所有圖片鏈接后瘫析,使用批量下載工具直接下載砌梆。
4,如何爬取網(wǎng)頁鏈接贬循?
設(shè)置Type為L(zhǎng)ink,爬蟲將爬取到該元素上的超鏈接咸包。
如圖所示:當(dāng)Type為text時(shí),爬取到的數(shù)據(jù)是立陶宛安吉利卡·喬麗娜舞團(tuán) 舞劇《安娜·卡列尼娜》 Anzelika Cholina Dance Theatre′s Anna Karenina
當(dāng)Type為L(zhǎng)ink時(shí)甘有,爬取到的數(shù)據(jù)是:https://www.douban.com/event/28303813/诉儒,也就是點(diǎn)擊下圖紅框中內(nèi)容跳轉(zhuǎn)的頁面鏈接。
當(dāng)你需要爬取的鏈接是一個(gè)下載文件的鏈接亏掀,比如說類似下圖中“公告下載”按鈕的鏈接忱反。你可以設(shè)置Type為Popup Link,這樣在爬取數(shù)據(jù)的過程中就會(huì)自動(dòng)下載文件了滤愕。
5温算,如何爬取二級(jí)頁面或三級(jí)頁面的內(nèi)容?
首先在根目錄下創(chuàng)建一個(gè)選擇器间影,這個(gè)選擇器選擇的內(nèi)容是可以點(diǎn)進(jìn)二級(jí)頁面的區(qū)域注竿,如果該區(qū)域有超鏈接,則設(shè)置Type為L(zhǎng)ink魂贬,否則設(shè)置為Element click巩割;然后在這個(gè)選擇器里面創(chuàng)建選擇器,選擇需要爬取的區(qū)域即可付燥。這個(gè)可以一級(jí)一級(jí)的嵌套下去宣谈。
怎么判斷一個(gè)區(qū)域是否有超鏈接?鼠標(biāo)放在該區(qū)域键科,右鍵單擊闻丑,如果有“在……中打開鏈接”的選項(xiàng)漩怎,則這個(gè)區(qū)域有超鏈接,設(shè)置Type為L(zhǎng)ink嗦嗡。
通過以上的設(shè)置勋锤,我們可以利用谷歌插件爬取80%的網(wǎng)站數(shù)據(jù),獲取到本地excel文件侥祭,進(jìn)而對(duì)數(shù)據(jù)進(jìn)行處理和分析叁执。
以上的技能除了可以用于工作,還可以應(yīng)用到生活中查詢資訊的時(shí)候卑硫。
很多時(shí)候網(wǎng)站的設(shè)計(jì)存在一定問題徒恋,為我們獲取資訊帶來一定困難。
比如知乎live的網(wǎng)頁欢伏,點(diǎn)進(jìn)去一個(gè)live詳情再退回來的時(shí)候入挣,頁面會(huì)回到頂部,需要你重新滾動(dòng)加載硝拧;https://www.zhihu.com/lives/
比如互動(dòng)吧的活動(dòng)列表頁径筏,沒有對(duì)活動(dòng)狀態(tài)的分類,正在進(jìn)行中的活動(dòng)一般是參與不了的障陶,但是篩選不出去滋恬。http://www.hdb.com/shanghai/0-0-2-0-1/
這時(shí)候如果你用web scraper工具的話,就可以將數(shù)據(jù)爬取到本地抱究,然后按照自己的需求進(jìn)行快速篩選了恢氯。
熟練掌握這個(gè)插件后,真的能提高工作效率鼓寺,減少麻煩嗎勋拟?
提高工作效率是一定的,但減少麻煩就不見得了妈候。畢竟我因?yàn)橄掳嗵绺颐遥焕习逭f了~嗚嗚嗚