淺析python 通⽤爬⾍和聚焦爬⾍
一、爬蟲的簡(jiǎn)單理解
1. 什么是爬蟲?
網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)蜘蛛,如果把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么蜘蛛就是在網(wǎng)上爬來(lái)爬去的蜘蛛,爬蟲程序通過(guò)請(qǐng)求url地址,根據(jù)響應(yīng)的內(nèi)容進(jìn)行解析采集數(shù)據(jù), 比如:如果響應(yīng)內(nèi)容是html,分析dom結(jié)構(gòu),進(jìn)行dom解析、或者正則匹配,如果響應(yīng)內(nèi)容是xml/json數(shù)據(jù),就可以轉(zhuǎn)數(shù)據(jù)對(duì)象,然后對(duì)數(shù)據(jù)進(jìn)行解析。
2. 爬蟲有什么作用?
通過(guò)有效的爬蟲手段批量采集數(shù)據(jù),可以降低人工成本,提高有效數(shù)據(jù)量,給予運(yùn)營(yíng)/銷售的數(shù)據(jù)支撐,加快產(chǎn)品發(fā)展。
3. 爬蟲業(yè)界的情況
目前互聯(lián)網(wǎng)產(chǎn)品競(jìng)爭(zhēng)激烈,業(yè)界大部分都會(huì)使用爬蟲技術(shù)對(duì)競(jìng)品產(chǎn)品的數(shù)據(jù)進(jìn)行挖掘、采集、大數(shù)據(jù)分析,這是必備手段,并且很多公司都設(shè)立了爬蟲工程師的崗位。
4. 合法性
爬蟲是利用程序進(jìn)行批量爬取網(wǎng)頁(yè)上的公開信息,也就是前端顯示的數(shù)據(jù)信息。因?yàn)樾畔⑹峭耆_的,所以是合法的。其實(shí)就像瀏覽器一樣,瀏覽器解析響應(yīng)內(nèi)容并渲染為頁(yè)面,而爬蟲解析響應(yīng)內(nèi)容采集想要的數(shù)據(jù)進(jìn)行存儲(chǔ)。
5. 反爬蟲
爬蟲很難完全的制止,道高一尺魔高一丈,這是一場(chǎng)沒(méi)有硝煙的戰(zhàn)爭(zhēng),碼農(nóng)VS碼農(nóng)
反爬蟲一些手段:
- 合法檢測(cè):請(qǐng)求校驗(yàn)(useragent,referer,接口加簽名,等)
- 小黑屋:IP/用戶限制請(qǐng)求頻率,或者直接攔截
- 投毒:反爬蟲高境界可以不用攔截,攔截是一時(shí)的,投毒返回虛假數(shù)據(jù),可以誤導(dǎo)競(jìng)品決策
二、通用爬蟲
根據(jù)使⽤場(chǎng)景,⽹絡(luò)爬⾍可分為 通⽤爬⾍ 和 聚焦爬⾍ 兩種.。
1、通⽤爬⾍
通⽤⽹絡(luò)爬⾍是捜索引擎(Baidu、Google、Yahoo)抓取系統(tǒng)的重要組成部分。主要⽬的是將互聯(lián)⽹上的⽹⻚下載到本地,形成⼀個(gè)互聯(lián)⽹內(nèi)容的鏡像備份。
⽹絡(luò)爬⾍的基本⼯作流程如下:
- ⾸先選取⼀部分精⼼挑選的種⼦URL;
- 將這些 URL 放⼊待抓取 URL 隊(duì)列;
- 從待抓取 URL 隊(duì)列中取出待抓取在 URL,解析 DNS,并且得到主機(jī)的 ip,并將 URL 對(duì)應(yīng)的⽹⻚下載下來(lái),存儲(chǔ)進(jìn)已下載⽹⻚庫(kù)中。此外,將 這些 URL 放進(jìn)已抓取 URL 隊(duì)列。
- 分析已抓取 URL 隊(duì)列中的 URL,分析其中的其他 URL,并且將 URL放⼊ 待抓取 URL 隊(duì)列,從⽽進(jìn)⼊下⼀個(gè)循環(huán)....
2、通⽤搜索引擎(Search Engine)⼯作原理
隨著⽹絡(luò)的迅速發(fā)展,萬(wàn)維⽹成為⼤量信息的載體,如何有效地提取并利⽤這些信息成為⼀個(gè)巨⼤的挑戰(zhàn),通常⽤戶會(huì)通過(guò)搜索引擎(Yahoo,Google,百度等),來(lái)作為訪問(wèn)萬(wàn)維⽹的⼊⼝。
⽽ 通⽤⽹絡(luò)爬⾍ 是搜索引擎系統(tǒng)中⼗分重要的組成部分,它負(fù)責(zé)從互聯(lián)⽹中搜集⽹⻚,采集信息,這些⽹⻚信息⽤于為搜索引擎建⽴索引從⽽提供⽀持,它決定著整個(gè)引擎系統(tǒng)的內(nèi)容是否豐富,信息是否即時(shí),因此其性能的優(yōu)劣直接影響著搜索引擎的效果。
第⼀步:抓取⽹⻚
搜索引擎通過(guò)⼀種有特定規(guī)律的軟件,來(lái)跟蹤⽹⻚的鏈接,從⼀個(gè)鏈接爬到另外⼀個(gè)鏈接,像蜘蛛在蜘蛛⽹上爬⾏⼀樣,所以被稱為“蜘蛛”也被稱為“機(jī)器⼈”。
但是搜索引擎蜘蛛的爬⾏是被輸⼊了⼀定的規(guī)則的,它需要遵從⼀些命令或⽂件的內(nèi)容。
Robots 協(xié)議(也稱為爬⾍協(xié)議、機(jī)器⼈協(xié)議等)的全稱是“⽹絡(luò)爬⾍排除標(biāo)準(zhǔn)”(Robots Exclusion Protocol),⽹站通過(guò) Robots 協(xié)議告訴搜索引擎哪些⻚⾯可以抓取,哪些⻚⾯不能抓取
https://www.taobao.com/robots...
http://www.qq.com/robots.txt
robots.txt 只是約定,爬⾍遵守或者不遵守完全在于爬⾍作者的意愿。舉個(gè)例⼦,公交⻋上貼著「請(qǐng)為⽼弱病殘?jiān)凶屪?,但?#12068;部分⼈并不⻅得會(huì)遵守。⼀般來(lái)講,只有⼤的搜索引擎爬⾍會(huì)遵守你⽹站的 robots.txt 協(xié)議,其它的爬⾍基本都不會(huì)看⼀眼你的 robots.txt 寫的是什么。
第⼆步:數(shù)據(jù)存儲(chǔ)
搜索引擎是通過(guò)蜘蛛跟蹤鏈接爬⾏到⽹⻚,并將爬⾏的數(shù)據(jù)存⼊原始⻚⾯數(shù)據(jù)庫(kù)。其中的⻚⾯數(shù)據(jù)與⽤戶瀏覽器得到的 HTML 是完全⼀樣的。搜索引擎蜘蛛在抓取⻚⾯時(shí),也做⼀定的重復(fù)內(nèi)容檢測(cè),⼀旦遇到權(quán)重很低的⽹站上有⼤量抄襲、采集或者復(fù)制的內(nèi)容,很可能就不再爬⾏。
第三步:預(yù)處理
搜索引擎將蜘蛛抓取回來(lái)的⻚⾯,進(jìn)⾏各種步驟的預(yù)處理。
- 提取⽂字
- 中⽂分詞
- 去停⽌
- 詞
- 消除噪⾳(搜索引擎需要識(shí)別并消除這些噪聲,⽐如版權(quán)聲明⽂字、導(dǎo) 航條、⼴告等……)
- 正向索引
- 倒排索
- 引鏈接關(guān)系計(jì)算
- 特殊⽂件處理
- ....
除了 HTML⽂件外,搜索引擎通常還能抓取和索引以⽂字為基礎(chǔ)的多種⽂件類型,如 PDF、Word、WPS、XLS、PPT、TXT ⽂件等。我們?cè)谒阉鹘Y(jié)果中也經(jīng)常會(huì)看到這些⽂件類型。
但搜索引擎還不能處理圖⽚、視頻、Flash 這類⾮⽂字內(nèi)容,也不能執(zhí)⾏腳本和程序。
第四步:排名,提供檢索服務(wù)
搜索引擎是根據(jù)⼀定的策略、運(yùn)⽤特定的計(jì)算機(jī)程序從互聯(lián)⽹上搜集信息,在對(duì)信息進(jìn)⾏組織和處理后,為⽤戶提供檢索服務(wù),將⽤戶檢索相關(guān)的信息展示給⽤戶的系統(tǒng)。
但是,這些通⽤性搜索引擎也存在著⼀定的局限性:
- 不同領(lǐng)域、不同背景的⽤戶往往具有不同的檢索⽬的和需求,通⽤搜索引擎所返回的結(jié)果包含⼤量⽤戶不關(guān)⼼的⽹⻚。
- 通⽤搜索引擎的⽬標(biāo)是盡可能⼤的⽹絡(luò)覆蓋率,有限的搜索引擎服務(wù)器資源與⽆限的⽹絡(luò)數(shù)據(jù)資源之間的⽭盾將進(jìn)⼀步加深。
- 萬(wàn)維⽹數(shù)據(jù)形式的豐富和⽹絡(luò)技術(shù)的不斷發(fā)展,圖⽚、數(shù)據(jù)庫(kù)、⾳頻、視頻多媒體等不同數(shù)據(jù)⼤量出現(xiàn),通⽤搜索引擎往往對(duì)這些信息含量密集且具有⼀定結(jié)構(gòu)的數(shù)據(jù)⽆能為⼒,不能很好地發(fā)現(xiàn)和獲取。
- 通⽤搜索引擎⼤多提供基于關(guān)鍵字的檢索,難以⽀持根據(jù)語(yǔ)義信息提出的查詢。
三、聚焦爬⾍(Focused Crawler)
- 聚焦爬⾍,⼜稱主題爬⾍(或?qū)I(yè)爬⾍),是“⾯向特定主題”的⼀種⽹絡(luò)爬⾍程序。它與我們通常所說(shuō)的爬⾍(通⽤爬⾍)的區(qū)別之處就在于,聚焦爬⾍在實(shí)施⽹⻚抓取時(shí)要進(jìn)⾏主題篩選。它盡量保證只抓取與主題相關(guān)的⽹⻚信息。
- 聚焦⽹絡(luò)爬⾍并不追求⼤的覆蓋,⽽將⽬標(biāo)定為抓取與某⼀特定主題內(nèi)容相關(guān)的⽹⻚,為⾯向主題的⽤戶查詢準(zhǔn)備數(shù)據(jù)資源。
- 聚焦爬⾍的⼯作流程較為復(fù)雜,需要根據(jù)⼀定的⽹⻚分析算法過(guò)濾與主題⽆關(guān)的鏈接,保留有⽤的鏈接并將其放⼊等待抓取的 URL 隊(duì)列。然后,它將根據(jù)⼀定的搜索策略從隊(duì)列中選擇下⼀步要抓取的⽹⻚URL,并重復(fù)上述過(guò)程,直到達(dá)到系統(tǒng)的某⼀條件時(shí)停⽌。
- 另外,所有被爬⾍抓取的⽹⻚將會(huì)被系統(tǒng)存貯,進(jìn)⾏⼀定的分析、過(guò)濾,并建⽴索引,以便之后的查詢和檢索;對(duì)于聚焦爬⾍來(lái)說(shuō),這⼀過(guò)程所得到的分析結(jié)果還可能對(duì)以后的抓取過(guò)程給出反饋和指導(dǎo)。
以上就是淺析python 通⽤爬⾍和聚焦爬⾍的詳細(xì)內(nèi)容,更多關(guān)于python 爬蟲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python SELENIUM上傳文件或圖片實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了Python SELENIUM上傳文件或圖片實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10python使用梯度下降算法實(shí)現(xiàn)一個(gè)多線性回歸
這篇文章主要為大家詳細(xì)介紹了python使用梯度下降算法實(shí)現(xiàn)一個(gè)多線性回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Python中for循環(huán)和while循環(huán)的基本使用方法
這篇文章主要介紹了Python中for循環(huán)和while循環(huán)的基本使用方法,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08如何使用Python 抓取和優(yōu)化所有網(wǎng)站圖像
我發(fā)布了一個(gè)通過(guò)FTP自動(dòng)優(yōu)化新圖像的教程。這次我們將抓取整個(gè)網(wǎng)站,并在本地優(yōu)化我們遇到的圖像,按URL組織,怎么來(lái)操作呢,下面跟隨小編一起學(xué)習(xí)使用Python 抓取和優(yōu)化所有網(wǎng)站圖像的方法,感興趣的朋友一起看看吧2023-02-02python 中os模塊os.path.exists()的用法說(shuō)明
這篇文章主要介紹了python 中os模塊os.path.exists()的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03