爬蟲(chóng)的介紹

作為程序員歌径,相信大家對(duì)“爬蟲(chóng)”這個(gè)詞并不陌生,身邊常常會(huì)有人提這個(gè)詞省艳,在不了解它的人眼中娘纷,會(huì)覺(jué)得這個(gè)技術(shù)很高端很神秘。不用著急跋炕,我們的爬蟲(chóng)系列就是帶你去揭開(kāi)它的神秘面紗赖晶,探尋它真實(shí)的面目。

爬蟲(chóng)是什么

網(wǎng)絡(luò)爬蟲(chóng)(又被稱為網(wǎng)頁(yè)蜘蛛辐烂,網(wǎng)絡(luò)機(jī)器人)遏插,是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本纠修。另外一些不常使用的名字還有螞蟻胳嘲、自動(dòng)索引、模擬程序或者蠕蟲(chóng)扣草。

通俗地講了牛,我們把互聯(lián)網(wǎng)比作一張大蜘蛛網(wǎng)颜屠,每個(gè)站點(diǎn)資源比作蜘蛛網(wǎng)上的一個(gè)結(jié)點(diǎn),爬蟲(chóng)就像一只蜘蛛鹰祸,按照設(shè)計(jì)好的路線和規(guī)則在這張蜘蛛網(wǎng)上找到目標(biāo)結(jié)點(diǎn)甫窟,獲取資源。

為什么使用爬蟲(chóng)

為什么我們需要使用爬蟲(chóng)呢福荸?

大家可以想象一下一個(gè)場(chǎng)景:你非常崇拜一個(gè)微博名人蕴坪,你想把他十年來(lái)微博上的每一句話摘抄下來(lái),制作成名人語(yǔ)錄敬锐。這個(gè)時(shí)候你怎么辦呢?手動(dòng)去 Ctrl+C 和 Ctrl+V 嗎呆瞻?這種方法確實(shí)沒(méi)錯(cuò)台夺,數(shù)據(jù)量小的時(shí)候我們還可以這樣做,但是數(shù)據(jù)成千上萬(wàn)的時(shí)候你還要這樣做嗎痴脾?

我們?cè)賮?lái)想象另一個(gè)場(chǎng)景:我們要做一個(gè)新聞聚合網(wǎng)站颤介,每天需要定時(shí)去幾個(gè)新聞網(wǎng)站獲取最新的新聞,我們稱之為 RSS 訂閱赞赖。難道我們定時(shí)去各個(gè)訂閱網(wǎng)站復(fù)制新聞嗎滚朵?

上面兩種場(chǎng)景,使用爬蟲(chóng)技術(shù)可以很輕易地解決問(wèn)題前域。爬蟲(chóng)技術(shù)主要可以幫助我們做兩類事情:一類是數(shù)據(jù)獲取需求辕近,主要針對(duì)大數(shù)據(jù)量的信息獲取匿垄;另一類是自動(dòng)化需求移宅,主要應(yīng)用在類似信息聚合、搜索等方面椿疗。

爬蟲(chóng)的分類

從爬取對(duì)象來(lái)看漏峰,爬蟲(chóng)可以分為通用爬蟲(chóng)和聚焦爬蟲(chóng)兩類。

通用網(wǎng)絡(luò)爬蟲(chóng)又稱全網(wǎng)爬蟲(chóng)(Scalable Web Crawler)届榄,爬行對(duì)象從一些種子 URL 擴(kuò)充到整個(gè) Web浅乔,主要為搜索引擎和大型 Web 服務(wù)提供商采集數(shù)據(jù)。這類網(wǎng)絡(luò)爬蟲(chóng)的爬取范圍和數(shù)量巨大铝条,對(duì)于爬行速度和存儲(chǔ)空間要求較高靖苇,對(duì)于爬行頁(yè)面的順序要求相對(duì)較低。例如我們常見(jiàn)的百度和谷歌搜索攻晒。我們輸入關(guān)鍵詞顾复,它們會(huì)從全網(wǎng)去找關(guān)鍵詞相關(guān)的網(wǎng)頁(yè),并且按照一定的順序呈現(xiàn)給我們鲁捏。

聚焦網(wǎng)絡(luò)爬蟲(chóng)(Focused Crawler)芯砸,是指選擇性地爬取那些與預(yù)先定義好的主題相關(guān)頁(yè)面的網(wǎng)絡(luò)爬蟲(chóng)萧芙。和通用網(wǎng)絡(luò)爬蟲(chóng)相比,聚焦爬蟲(chóng)只需要爬取特定的網(wǎng)頁(yè)假丧,爬取的廣度會(huì)小很多双揪。例如我們需要爬取東方財(cái)富網(wǎng)的基金數(shù)據(jù),我們只需要針對(duì)東方財(cái)富網(wǎng)的頁(yè)面制定規(guī)則爬取就行包帚。

瀏覽網(wǎng)頁(yè)的過(guò)程

在用戶瀏覽網(wǎng)頁(yè)的過(guò)程中渔期,我們可能會(huì)看到許多好看的圖片,比如?http://image.baidu.com/?渴邦,我們會(huì)看到幾張圖片以及百度搜索框疯趟,這個(gè)過(guò)程其實(shí)就是用戶輸入網(wǎng)址之后,經(jīng)過(guò)DNS服務(wù)器谋梭,找到服務(wù)器主機(jī)信峻,向服務(wù)器發(fā)出一個(gè)請(qǐng)求,服務(wù)器經(jīng)過(guò)解析之后瓮床,發(fā)送給用戶的瀏覽器 HTML盹舞、JS、CSS 等文件隘庄,瀏覽器解析出來(lái)踢步,用戶便可以看到形形色色的圖片了。

因此丑掺,用戶看到的網(wǎng)頁(yè)實(shí)質(zhì)是由 HTML 代碼構(gòu)成的获印,爬蟲(chóng)爬來(lái)的便是這些內(nèi)容,通過(guò)分析和過(guò)濾這些 HTML 代碼吼鱼,實(shí)現(xiàn)對(duì)圖片蓬豁、文字等資源的獲取。

URL的含義

URL菇肃,即統(tǒng)一資源定位符地粪,也就是我們說(shuō)的網(wǎng)址,統(tǒng)一資源定位符是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示琐谤,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址蟆技。互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL斗忌,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它质礼。

URL的格式由三部分組成:

①第一部分是協(xié)議(或稱為服務(wù)方式)。

②第二部分是存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào))织阳。

③第三部分是主機(jī)資源的具體地址眶蕉,如目錄和文件名等。

爬蟲(chóng)爬取數(shù)據(jù)時(shí)必須要有一個(gè)目標(biāo)的 URL 才可以獲取數(shù)據(jù)唧躲,因此造挽,它是爬蟲(chóng)獲取數(shù)據(jù)的基本依據(jù)碱璃,準(zhǔn)確理解它的含義對(duì)爬蟲(chóng)學(xué)習(xí)有很大幫助。

爬蟲(chóng)的流程

我們接下來(lái)的篇章主要討論聚焦爬蟲(chóng)饭入,聚焦爬蟲(chóng)的工作流程如下圖:


①首先我們需要有一個(gè)種子URL隊(duì)列嵌器,這個(gè)隊(duì)列中的URL相當(dāng)于我們蜘蛛爬行的第一個(gè)結(jié)點(diǎn),是我們?cè)诖缶W(wǎng)中爬行的第一步谐丢。

②對(duì)隊(duì)列中的每一個(gè)URL進(jìn)行請(qǐng)求爽航,我們會(huì)得到響應(yīng)內(nèi)容,通常響應(yīng)內(nèi)容為HTML乾忱。如果響應(yīng)內(nèi)容里面有我們的目標(biāo)URL讥珍,提取出來(lái)加入U(xiǎn)RL隊(duì)列中。

③解析響應(yīng)內(nèi)容饭耳,提取我們需要的數(shù)據(jù)串述。④存儲(chǔ)數(shù)據(jù),我們可以將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)寞肖、文件等。

總結(jié)

本節(jié)給大家介紹了爬蟲(chóng)的基本概念衰腌,讓大家對(duì)爬蟲(chóng)有一個(gè)大致的了解新蟆,以便后續(xù)章節(jié)的學(xué)習(xí)。開(kāi)胃菜吃完了右蕊,下一節(jié)我們就要開(kāi)始吃大餐了喲琼稻,你準(zhǔn)備好了嗎?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饶囚,一起剝皮案震驚了整個(gè)濱河市帕翻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萝风,老刑警劉巖嘀掸,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異规惰,居然都是意外死亡睬塌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)歇万,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)揩晴,“玉大人,你說(shuō)我怎么就攤上這事贪磺×蚶迹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵寒锚,是天一觀的道長(zhǎng)劫映。 經(jīng)常有香客問(wèn)我违孝,道長(zhǎng),這世上最難降的妖魔是什么苏研? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任等浊,我火速辦了婚禮,結(jié)果婚禮上摹蘑,老公的妹妹穿的比我還像新娘筹燕。我一直安慰自己,他們只是感情好衅鹿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布撒踪。 她就那樣靜靜地躺著,像睡著了一般大渤。 火紅的嫁衣襯著肌膚如雪制妄。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天泵三,我揣著相機(jī)與錄音耕捞,去河邊找鬼。 笑死烫幕,一個(gè)胖子當(dāng)著我的面吹牛俺抽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播较曼,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼磷斧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了捷犹?” 一聲冷哼從身側(cè)響起弛饭,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萍歉,沒(méi)想到半個(gè)月后侣颂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翠桦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年横蜒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片销凑。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丛晌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斗幼,到底是詐尸還是另有隱情澎蛛,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布蜕窿,位于F島的核電站谋逻,受9級(jí)特大地震影響呆馁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毁兆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一浙滤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧气堕,春花似錦纺腊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至梅桩,卻和暖如春壹粟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宿百。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工趁仙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垦页。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓幸撕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親外臂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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