摘要:前言開發(fā)爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發(fā)的。的可配置爬蟲降低了爬蟲的開發(fā)時(shí)間,增加了爬蟲開發(fā)效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。
前言開發(fā)爬蟲是一件有趣的事情。寫一個(gè)程序,對(duì)感興趣的目標(biāo)網(wǎng)站發(fā)起HTTP請(qǐng)求,獲取HTML,解析HTML,提取數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫或者存為CSV、JSON等格式,再用自己熟悉的語言例如Python對(duì)這些數(shù)據(jù)進(jìn)行分析生成酷炫的圖表。這個(gè)過程是不是很興奮?
然而,開發(fā)爬蟲并不是一件簡單的事情。通常開發(fā)一個(gè)簡單爬蟲往往需要編寫好幾個(gè)模塊:下載器、解析器、提取規(guī)則、保存模塊。實(shí)現(xiàn)這個(gè)簡單爬蟲用Python實(shí)現(xiàn)至少需要編寫10-20行代碼,而且如果考慮并發(fā)和調(diào)度的話,通常要編寫50行代碼以上。更麻煩的是,如果要管理多個(gè)爬蟲實(shí)現(xiàn)爬蟲的工程化,需要對(duì)各個(gè)網(wǎng)站的爬蟲代碼提取共用模塊和參數(shù),這個(gè)過程需要相當(dāng)?shù)墓こ探?jīng)驗(yàn)和時(shí)間積累。其實(shí),一般各大網(wǎng)站的結(jié)構(gòu)大同小異,僅需要更改提取規(guī)則即可。很多爬蟲工程師要在大型項(xiàng)目中編寫成百上千的提取規(guī)則,對(duì)于沒有任何管理工具的人來說,這基本上是個(gè)噩夢(mèng)。
可配置爬蟲幸運(yùn)的是,Crawlab在版本v0.2.1中新增功能可配置爬蟲可以讓工程師從這些重復(fù)性工作中解放開來。Crawlab的可配置爬蟲只需要爬蟲工程師配置一些必要的CSS/XPath提取規(guī)則,就可以完成一個(gè)常規(guī)的爬蟲開發(fā)。根據(jù)作者實(shí)驗(yàn),對(duì)于CSS選擇器或XPath稍微熟悉點(diǎn)的工程師,用可配置爬蟲開發(fā)完一個(gè)包含五臟俱全的常規(guī)爬蟲只需要1-3分鐘。
Crawlab的可配置爬蟲是基于Scrapy的,因此天生是支持并發(fā)的。而且,可配置爬蟲完全支持Crawlab自定義爬蟲的一般功能的,因此也支持任務(wù)調(diào)度、任務(wù)監(jiān)控、日志監(jiān)控、數(shù)據(jù)分析。
安裝運(yùn)行CrawlabCrawlab是一個(gè)專注于爬蟲的集成了爬蟲管理、任務(wù)調(diào)度、任務(wù)監(jiān)控、數(shù)據(jù)分析等模塊的分布式爬蟲管理平臺(tái),非常適合對(duì)爬蟲管理、爬蟲工程化有要求的開發(fā)者及企業(yè)。
關(guān)于Crawlab的詳細(xì)介紹請(qǐng)參考之前的文章:
爬蟲平臺(tái)Crawlab v0.2發(fā)布
手把手教你如何用Crawlab構(gòu)建技術(shù)文章聚合平臺(tái)(二)
手把手教你如何用Crawlab構(gòu)建技術(shù)文章聚合平臺(tái)(一)
分布式通用爬蟲管理平臺(tái)Crawlab
以下是Crawlab的安裝和運(yùn)行步驟,時(shí)間大概在10-20分鐘。
安裝步驟 運(yùn)行步驟 如何開發(fā)并運(yùn)行可配置爬蟲下面總算到了爬蟲開發(fā)時(shí)間。這里將以網(wǎng)易24小時(shí)排行新聞為例,開發(fā)一個(gè)相應(yīng)的可配置爬蟲,整個(gè)流程應(yīng)該不超過3分鐘。
添加爬蟲Crawlab跑起來之后,在瀏覽器中打開網(wǎng)址http://localhost:8080,導(dǎo)航到爬蟲。在點(diǎn)擊添加爬蟲按鈕。
點(diǎn)擊可配置爬蟲。
輸入完基本信息,點(diǎn)擊添加。
配置爬蟲
添加完成后,可以看到剛剛添加的可配置爬蟲出現(xiàn)了在最下方,點(diǎn)擊查看進(jìn)入到爬蟲詳情。
點(diǎn)擊配置標(biāo)簽進(jìn)入到配置頁面。接下來,我們需要對(duì)爬蟲規(guī)則進(jìn)行配置。
這里已經(jīng)有一些配置好的初始輸入項(xiàng)。我們簡單介紹一下各自的含義。
這也是爬蟲抓取采用的策略,也就是爬蟲遍歷網(wǎng)頁是如何進(jìn)行的。作為第一個(gè)版本,我們有僅列表、僅詳情頁、列表+詳情頁。
僅列表頁。這也是最簡單的形式,爬蟲遍歷列表上的列表項(xiàng),將數(shù)據(jù)抓取下來。
僅詳情頁。爬蟲只抓取詳情頁。
列表+詳情頁。爬蟲先遍歷列表頁,將列表項(xiàng)中的詳情頁地址提取出來并跟進(jìn)抓取詳情頁。
這里我們選擇列表+詳情頁。
列表項(xiàng)的匹和分頁按鈕的匹配查詢,由CSS或XPath來進(jìn)行匹配。
爬蟲最開始遍歷的網(wǎng)址。
這個(gè)默認(rèn)是開啟的。如果開啟,爬蟲將先抓取網(wǎng)站的robots.txt并判斷頁面是否可抓;否則,不會(huì)對(duì)此進(jìn)行驗(yàn)證。用戶可以選擇將其關(guān)閉。請(qǐng)注意,任何無視Robots協(xié)議的行為都有法律風(fēng)險(xiǎn)。
這些都是再列表頁或詳情頁中需要提取的字段。字段由CSS選擇器或者XPath來匹配提取。可以選擇文本或者屬性。
在檢查完目標(biāo)網(wǎng)頁的元素CSS選擇器之后,我們輸入列表項(xiàng)選擇器、開始URL、列表頁/詳情頁等信息。注意勾選url為詳情頁URL。
點(diǎn)擊保存、預(yù)覽,查看預(yù)覽內(nèi)容。
OK,現(xiàn)在配置大功告成,終于可開始跑爬蟲了!
運(yùn)行爬蟲你唯一需要做的,就是點(diǎn)擊運(yùn)行按鈕并確認(rèn)。點(diǎn)擊概覽標(biāo)簽,你可以看到任務(wù)已經(jīng)開始運(yùn)行了。
點(diǎn)擊創(chuàng)建時(shí)間鏈接導(dǎo)航到任務(wù)詳情,點(diǎn)擊結(jié)果標(biāo)簽,你就可以看到抓取到的結(jié)果已經(jīng)保存下來了。
怎么樣,這個(gè)過程是不是超級(jí)簡單?如果熟練的話,整個(gè)過程可以在60秒內(nèi)完成!就跟玩魔方一樣,越玩越熟練!
結(jié)語本文利用Crawlab的可配置爬蟲功能實(shí)現(xiàn)了3分鐘內(nèi)對(duì)網(wǎng)易新聞24小時(shí)新聞排行榜的抓取。同樣的過程可以實(shí)現(xiàn)在其他類似的網(wǎng)站上面。雖然這是一個(gè)經(jīng)典的“列表+詳情頁”的抓取模式,比較簡單,后續(xù)我們還會(huì)開發(fā)更多的更復(fù)雜的抓取模式,實(shí)現(xiàn)更多的抓取需求。Crawlab的可配置爬蟲降低了爬蟲的開發(fā)時(shí)間,增加了爬蟲開發(fā)效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。配置工作可以交給初級(jí)爬蟲工程師或者外包人員來做,而高級(jí)爬蟲工程師會(huì)把精力放在更復(fù)雜的爬蟲工作上來,例如反爬、動(dòng)態(tài)內(nèi)容、分布式爬蟲等等。
Github: tikazyq/crawlab
如果感覺Crawlab還不錯(cuò),對(duì)你的日常工作或企業(yè)有幫助的話,請(qǐng)加作者微信拉入開發(fā)交流群,大家一起交流關(guān)于Crawlab的使用和開發(fā)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/7842.html
摘要:前言開發(fā)爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發(fā)的。遵守協(xié)議這個(gè)默認(rèn)是開啟的。的可配置爬蟲降低了爬蟲的開發(fā)時(shí)間,增加了爬蟲開發(fā)效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。 前言 開發(fā)爬蟲是一件有趣的事情。寫一個(gè)程序,對(duì)感興趣的目標(biāo)網(wǎng)站發(fā)起HTTP請(qǐng)求,獲取HTML,解析HTML,提取數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫或者存為CSV、JSON等格式,再...
摘要:從今天起,我將在這里更新一個(gè)系列的簡單爬蟲到建立網(wǎng)站的實(shí)踐手記。內(nèi)容將會(huì)從最簡單的開始,環(huán)境搭建,基本爬蟲,入庫,用建立可供用戶訪問的網(wǎng)站,網(wǎng)站部署。第一部分,買,裝環(huán)境。我們爬蟲站點(diǎn)的所有文件都放在里面。 從今天起,我將在這里更新一個(gè)系列的python簡單爬蟲到建立網(wǎng)站的實(shí)踐手記。 內(nèi)容將會(huì)從最簡單的開始,環(huán)境搭建,基本爬蟲,入庫,用Django建立可供用戶訪問的網(wǎng)站,網(wǎng)站部署。 ...
摘要:是什么呀是一個(gè)和不太一樣的數(shù)據(jù)庫。懷疑是同時(shí)聯(lián)了四個(gè)集合的數(shù)據(jù)造成的。這本書的定位是和的應(yīng)用,所以有意弱化了數(shù)據(jù)庫的搭建維護(hù)和底層優(yōu)化。所以本書可能不適合數(shù)據(jù)庫工程師。 這篇文章沒有代碼,請(qǐng)放心閱讀。 程序員最寶貴的東西是生命,生命屬于程序員只有一次。一個(gè)程序員的一生應(yīng)該這樣度過:當(dāng)她回首往事的時(shí)候,她不會(huì)因?yàn)榇罱ōh(huán)境浪費(fèi)時(shí)間而悔恨,也不會(huì)因?yàn)榧簾o法運(yùn)行而羞恥。這樣,在她開發(fā)的時(shí)候,...
摘要:是什么呀是一個(gè)和不太一樣的數(shù)據(jù)庫。懷疑是同時(shí)聯(lián)了四個(gè)集合的數(shù)據(jù)造成的。這本書的定位是和的應(yīng)用,所以有意弱化了數(shù)據(jù)庫的搭建維護(hù)和底層優(yōu)化。所以本書可能不適合數(shù)據(jù)庫工程師。 這篇文章沒有代碼,請(qǐng)放心閱讀。 程序員最寶貴的東西是生命,生命屬于程序員只有一次。一個(gè)程序員的一生應(yīng)該這樣度過:當(dāng)她回首往事的時(shí)候,她不會(huì)因?yàn)榇罱ōh(huán)境浪費(fèi)時(shí)間而悔恨,也不會(huì)因?yàn)榧簾o法運(yùn)行而羞恥。這樣,在她開發(fā)的時(shí)候,...
摘要:接上回第二部分,編寫爬蟲。進(jìn)入微信嵌套選擇圖片和上傳圖片接口,實(shí)現(xiàn)一鍵上傳圖片,遇到問題看吧,我現(xiàn)在已經(jīng)可以通過爬蟲獲取的提問標(biāo)題了。微信故意省略想做小偷站的,看到這里基本上就能搞出來了。下一篇,采集入庫 上回,我裝了環(huán)境 也就是一對(duì)亂七八糟的東西 裝了pip,用pip裝了virtualenv,建立了一個(gè)virtualenv,在這個(gè)virtualenv里面,裝了Django,創(chuàng)建了一個(gè)...
閱讀 2894·2021-11-24 09:39
閱讀 3151·2021-11-19 10:00
閱讀 1552·2021-10-27 14:17
閱讀 1822·2021-10-14 09:43
閱讀 977·2021-09-03 10:30
閱讀 3421·2019-08-30 15:54
閱讀 2748·2019-08-30 13:05
閱讀 2021·2019-08-30 11:02