001:网络爬虫基础理论整合
本篇文章整合了網(wǎng)絡(luò)爬蟲(chóng)的基礎(chǔ)知識(shí),文章內(nèi)容簡(jiǎn)明易懂。適合用來(lái)復(fù)習(xí)爬蟲(chóng)知識(shí)或者初識(shí)爬蟲(chóng)的人。
下面步入正題:
網(wǎng)絡(luò)爬蟲(chóng)又被稱(chēng)為網(wǎng)絡(luò)機(jī)器人,可以代替人們自動(dòng)的在互聯(lián)網(wǎng)中進(jìn)行數(shù)據(jù)信息的采集與整理。在大數(shù)據(jù)時(shí)代,數(shù)據(jù)復(fù)雜度及采集數(shù)據(jù)效率是非常重要的。所以可以使用網(wǎng)絡(luò)爬蟲(chóng)對(duì)數(shù)據(jù)信息進(jìn)行自動(dòng)采集并整合。
要學(xué)習(xí)網(wǎng)絡(luò)爬蟲(chóng),首先要認(rèn)識(shí)網(wǎng)絡(luò)爬蟲(chóng),在本篇中,我來(lái)介紹一下幾種典型的網(wǎng)絡(luò)爬蟲(chóng),并了解其各種常見(jiàn)功能。
初始網(wǎng)絡(luò)爬蟲(chóng):
網(wǎng)絡(luò)爬蟲(chóng)可以自動(dòng)化的瀏覽網(wǎng)絡(luò)中的信息,并按照我們制定的規(guī)則進(jìn)行,這些規(guī)則我們稱(chēng)之為網(wǎng)絡(luò)爬蟲(chóng)算法。Python語(yǔ)言可以很方便的寫(xiě)出爬蟲(chóng)程序,進(jìn)行互聯(lián)網(wǎng)的信息自動(dòng)化檢索。
每一個(gè)搜索引擎都離不開(kāi)爬蟲(chóng),百度的搜索引擎爬蟲(chóng)叫做百度蜘蛛,360的爬蟲(chóng)叫做360pider,搜狗的爬蟲(chóng)叫做Sogouspider,必應(yīng)的爬蟲(chóng)叫Bingbot。
網(wǎng)絡(luò)爬蟲(chóng)的組成:
網(wǎng)絡(luò)爬蟲(chóng)主要由控制節(jié)點(diǎn)、爬蟲(chóng)節(jié)點(diǎn)、資源庫(kù)構(gòu)成。
控制節(jié)點(diǎn),也叫作爬蟲(chóng)的中央控制器,主要負(fù)責(zé)根據(jù)URL地質(zhì)分配線程,并調(diào)用爬蟲(chóng)節(jié)點(diǎn)按照相關(guān)的算法,對(duì)網(wǎng)頁(yè)進(jìn)行具體的爬行。并將對(duì)應(yīng)的結(jié)果儲(chǔ)存到對(duì)應(yīng)的資源庫(kù)中。
網(wǎng)絡(luò)爬蟲(chóng)的類(lèi)型:
通用網(wǎng)絡(luò)爬蟲(chóng):也叫全網(wǎng)爬蟲(chóng)。顧名思義,爬取的資源在全網(wǎng)中。通用爬蟲(chóng)主要由初始URL集合、URL隊(duì)列、頁(yè)面爬行模塊、頁(yè)面分析模塊、頁(yè)面數(shù)據(jù)庫(kù)、鏈接過(guò)濾模塊等構(gòu)成。
聚焦網(wǎng)絡(luò)爬蟲(chóng),主要應(yīng)用在對(duì)特定信息的爬取中。將爬取的目標(biāo)網(wǎng)頁(yè)定位在與主題相關(guān)的頁(yè)面中。聚焦網(wǎng)絡(luò)爬蟲(chóng)主要由:URL集合、URL隊(duì)列、頁(yè)面爬行模塊、頁(yè)面分析模塊、數(shù)據(jù)庫(kù)、鏈路過(guò)濾模塊等構(gòu)成、
增量式網(wǎng)絡(luò)爬蟲(chóng):在網(wǎng)頁(yè)更新的時(shí)候只更新其改變的地方,而未改變的地方則不更新。
只爬取內(nèi)容發(fā)生變化的網(wǎng)頁(yè)或者新產(chǎn)生的網(wǎng)頁(yè)。
深層網(wǎng)絡(luò)爬蟲(chóng):可以爬取互聯(lián)網(wǎng)中的深層頁(yè)面。
在互聯(lián)網(wǎng)中,網(wǎng)頁(yè)按照存在方式進(jìn)行分類(lèi),可以分為表層頁(yè)面和深層頁(yè)面。
所謂的 表層頁(yè)面 ,指的是不需要提交表單,使用靜態(tài)的鏈接就能夠達(dá)到的靜態(tài)頁(yè)面。而 深層頁(yè)面 則隱藏在表單后面,需要提交一定的關(guān)鍵詞之后才能獲取得到的頁(yè)面。
深層網(wǎng)絡(luò)爬蟲(chóng)主要由URL頁(yè)面,LVS列表(;LVS指的是標(biāo)簽數(shù)值集合,即是填充表單的數(shù)據(jù)源)、爬行控制器、解析器、LVS控制器、表單分析器、表單處理器、響應(yīng)分析器等部分構(gòu)成。
深層網(wǎng)絡(luò)爬蟲(chóng)表單的填寫(xiě)有兩種類(lèi)型:
第一種是基于領(lǐng)域知識(shí)的表單填寫(xiě)。
第二種是基于網(wǎng)頁(yè)結(jié)構(gòu)分析的表單填寫(xiě)。
網(wǎng)絡(luò)爬蟲(chóng)技能總覽圖:
搜索引擎核心:
爬蟲(chóng)與搜索引擎的關(guān)系是密不可分的
首先搜索引擎會(huì)利用爬蟲(chóng)模塊去爬取互聯(lián)網(wǎng)。
然后將爬取到的網(wǎng)頁(yè)儲(chǔ)存在原始數(shù)據(jù)庫(kù)中。
接著對(duì)原始數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行索引、
通過(guò)用戶(hù)交互借口輸入對(duì)應(yīng)的信息。
(用戶(hù)交互借口,相當(dāng)于搜索引擎的輸入框)
用戶(hù)輸入對(duì)應(yīng)信息的同事,也會(huì)將用戶(hù)的行為儲(chǔ)存到用戶(hù)日志數(shù)據(jù)庫(kù),日志分析器會(huì)根據(jù)大量的用戶(hù)數(shù)據(jù)去調(diào)整原始數(shù)據(jù)和索引數(shù)據(jù)庫(kù),改變其排名結(jié)果或進(jìn)行其他操作。
用戶(hù)爬蟲(chóng)的一些事:
用戶(hù)爬蟲(chóng)也是網(wǎng)絡(luò)爬蟲(chóng)中的一種類(lèi)型。
專(zhuān)門(mén)來(lái)爬蟲(chóng)互聯(lián)網(wǎng)中用戶(hù)數(shù)據(jù)的一種爬蟲(chóng)。
比如爬取淘寶的用戶(hù)信息,對(duì)知乎的用戶(hù)數(shù)據(jù)進(jìn)行爬取等。
爬蟲(chóng)的出現(xiàn),可以在一定的程度上代替手工訪問(wèn)網(wǎng)頁(yè)。
網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)原理詳解:
不同類(lèi)型的網(wǎng)絡(luò)爬蟲(chóng),其實(shí)現(xiàn)的原理也是不同的。
我在此以?xún)煞N典型的網(wǎng)絡(luò)爬蟲(chóng)為例。(通用網(wǎng)絡(luò)爬蟲(chóng)和聚焦網(wǎng)絡(luò)爬蟲(chóng)),分析下網(wǎng)絡(luò)爬蟲(chóng)的是實(shí)現(xiàn)原理。
通用網(wǎng)絡(luò)爬蟲(chóng):
聚焦網(wǎng)絡(luò)爬蟲(chóng):
聚焦網(wǎng)絡(luò)爬蟲(chóng),由于其需要有目的地進(jìn)行爬取,必須要增加對(duì)目標(biāo)的定義和過(guò)濾機(jī)制。
爬行策略:
爬行策略簡(jiǎn)意來(lái)說(shuō)是爬行的順序。
主要由深度優(yōu)先爬行策略,廣度優(yōu)先爬行策略、大站優(yōu)先策略、反鏈策略、其他爬行策略等。
假如此時(shí)網(wǎng)頁(yè)ABCDEFG都在爬行隊(duì)列中,name按照不同的爬行策略,其爬取的順序是不同的。
若按深度優(yōu)先爬行策略,爬行順序是A>D>E>B>C>F>G
按照廣度優(yōu)先爬行策略去爬取,順序是A>B>C>D>E>F>G
我們還可以采用大戰(zhàn)爬行策略。也是說(shuō)網(wǎng)頁(yè)數(shù)量越多的網(wǎng)站,爬取的優(yōu)先級(jí)越高。
網(wǎng)頁(yè)更新策略:
作為爬蟲(chóng)放,在網(wǎng)頁(yè)更新后,我們也需要針對(duì)更新的網(wǎng)頁(yè)部分進(jìn)行調(diào)整,重新爬取。爬蟲(chóng)也需要根據(jù)對(duì)應(yīng)策略,讓不同的網(wǎng)頁(yè)具有不同的更新優(yōu)先級(jí),優(yōu)先級(jí)搞的網(wǎng)頁(yè)更新,將獲得較快的爬行響應(yīng)。
**聚類(lèi)分析策略。**將共性較多的聚為一類(lèi)。既依據(jù)“物以類(lèi)聚”的思想去實(shí)現(xiàn)。
網(wǎng)頁(yè)分析算法:
搜索引擎的網(wǎng)頁(yè)分析算法主要分為3類(lèi):基于用戶(hù)行為的網(wǎng)頁(yè)分析算法,基于網(wǎng)絡(luò)拓?fù)涞木W(wǎng)頁(yè)分析算法,基于網(wǎng)頁(yè)內(nèi)容的網(wǎng)頁(yè)分析算法。
1:基于用戶(hù)行為的網(wǎng)頁(yè)分析算法
這種算法師根據(jù)用戶(hù)對(duì)這些網(wǎng)頁(yè)的訪問(wèn)行為,對(duì)這些網(wǎng)頁(yè)進(jìn)行評(píng)價(jià)。
2:基于網(wǎng)絡(luò)拓?fù)涞木W(wǎng)頁(yè)分析算法
基于網(wǎng)絡(luò)拓?fù)涞木W(wǎng)頁(yè)分析算法是依靠網(wǎng)頁(yè)的鏈接關(guān)系、結(jié)構(gòu)關(guān)系、已知網(wǎng)頁(yè)或數(shù)據(jù)進(jìn)行分析的一種算法。
3:基于網(wǎng)頁(yè)內(nèi)容的網(wǎng)頁(yè)分析算法
在基于網(wǎng)頁(yè)內(nèi)容的網(wǎng)頁(yè)分析算法中,會(huì)依據(jù)網(wǎng)頁(yè)的數(shù)據(jù),文本等網(wǎng)頁(yè)內(nèi)容特征,對(duì)網(wǎng)頁(yè)進(jìn)行相應(yīng)的評(píng)價(jià)。
身份識(shí)別:
身份識(shí)別是很有趣的一塊,在爬蟲(chóng)對(duì)網(wǎng)頁(yè)爬取的過(guò)程中,爬蟲(chóng)必須要訪問(wèn)對(duì)應(yīng)的網(wǎng)頁(yè),正規(guī)的爬蟲(chóng)一般都會(huì)告訴對(duì)應(yīng)網(wǎng)站站長(zhǎng)其爬蟲(chóng)身份,網(wǎng)站的管理員則可以通過(guò)爬蟲(chóng)告知的身份信息對(duì)爬蟲(chóng)的身份進(jìn)行識(shí)別。這個(gè)過(guò)程就是爬蟲(chóng)的身份識(shí)別過(guò)程。
一般來(lái)說(shuō),爬蟲(chóng)在對(duì)網(wǎng)頁(yè)進(jìn)行爬取訪問(wèn)的時(shí)候,會(huì)通過(guò)HTTP請(qǐng)求中的User Agent字段告知自己的身份信息。一般爬蟲(chóng)訪問(wèn)一個(gè)網(wǎng)站的時(shí)候,首先會(huì)根據(jù)該站點(diǎn)下的Rbots.txt文件來(lái)確定可爬取的網(wǎng)頁(yè)范圍,Robots協(xié)議是需要網(wǎng)絡(luò)爬蟲(chóng)共同遵守的協(xié)議。對(duì)于一些禁止的URL地址,網(wǎng)絡(luò)爬蟲(chóng)不應(yīng)爬取訪問(wèn)。同時(shí),如果爬取某一個(gè)站點(diǎn)時(shí)陷入死循環(huán),造成該站點(diǎn)的服務(wù)壓力過(guò)大,如果有正確的身份設(shè)置,name改站點(diǎn)的站長(zhǎng)則可以想辦法聯(lián)系到改爬蟲(chóng)方,然后停止對(duì)應(yīng)的爬蟲(chóng)程序。
當(dāng)然,有些爬蟲(chóng)會(huì)偽裝成其他爬蟲(chóng)或?yàn)g覽器去爬取網(wǎng)站,去獲得一些額外數(shù)據(jù),或者有些爬蟲(chóng)會(huì)無(wú)視Robots協(xié)議的限制而任意爬取。從技術(shù)的角度來(lái)說(shuō),這些行為實(shí)現(xiàn)起來(lái)并不難,但是這些行為是不提倡的!
因?yàn)橹挥泄餐袷匾粋€(gè)良好的網(wǎng)絡(luò)規(guī)則,才能夠達(dá)到爬蟲(chóng)方和站點(diǎn)服務(wù)方的雙贏。
內(nèi)容總結(jié):
本篇內(nèi)容介紹了什么是網(wǎng)絡(luò)爬蟲(chóng),網(wǎng)絡(luò)爬蟲(chóng)技能總覽,及網(wǎng)路爬蟲(chóng)實(shí)現(xiàn)原理和實(shí)現(xiàn)技術(shù)等概念。
如果對(duì)文章內(nèi)容感興趣的話,可以查看后續(xù)文章或留言聯(lián)系我。
ps----本文一部分內(nèi)容自python網(wǎng)絡(luò)爬蟲(chóng)書(shū)籍中。我閱讀了一遍后,重新挑出了其重要部分進(jìn)行整合,言簡(jiǎn)意賅。
下一篇內(nèi)容:Python爬蟲(chóng)之Urllib全方位解析
總結(jié)
以上是生活随笔為你收集整理的001:网络爬虫基础理论整合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: B端和C端产品的理解
- 下一篇: 人工智能会拥有意识吗?