柚子快報(bào)激活碼778899分享:什么是網(wǎng)絡(luò)爬蟲?認(rèn)識網(wǎng)絡(luò)爬蟲
柚子快報(bào)激活碼778899分享:什么是網(wǎng)絡(luò)爬蟲?認(rèn)識網(wǎng)絡(luò)爬蟲
一、什么是網(wǎng)絡(luò)爬蟲
1.爬蟲簡介
網(wǎng)絡(luò)爬蟲 ( Web Crawler) 又稱網(wǎng)絡(luò)蜘蛛、網(wǎng)絡(luò)機(jī)器人它是一種按照一定規(guī)則,自動(dòng)瀏覽萬維網(wǎng)的程序或腳本。通俗地講,網(wǎng)絡(luò)爬蟲就是一個(gè)模擬真人瀏覽萬維網(wǎng)行為的程序這個(gè)程序可以代替真人自動(dòng)請求萬維網(wǎng),并接收從萬維網(wǎng)返回的數(shù)據(jù)。與真人瀏覽萬維網(wǎng)相比,網(wǎng)絡(luò)爬蟲能夠?yàn)g覽的信息量更大,效率也更高。其主要功能是按照一定的規(guī)則,自動(dòng)地抓取互聯(lián)網(wǎng)上的信息,并將這些信息存儲在本地或者數(shù)據(jù)庫中,以供后續(xù)的數(shù)據(jù)處理和分析。網(wǎng)絡(luò)爬蟲通常被用于搜索引擎、數(shù)據(jù)挖掘、信息監(jiān)控等領(lǐng)域。我們可以使用網(wǎng)絡(luò)爬蟲對數(shù)據(jù)信息進(jìn)行自動(dòng)采集,比如應(yīng)用于搜索引擎中對站點(diǎn)進(jìn)行爬取收錄,應(yīng)用于數(shù)據(jù)分析與挖掘中對數(shù)據(jù)進(jìn)行采集,應(yīng)用于金融分析中對金融數(shù)據(jù)進(jìn)行采集,除此之外,還可以將網(wǎng)絡(luò)爬蟲應(yīng)用于輿情監(jiān)測與分析、目標(biāo)客戶數(shù)據(jù)的收集等各個(gè)領(lǐng)域。
2.爬蟲類型
網(wǎng)絡(luò)爬蟲歷經(jīng)幾十年的發(fā)展,技術(shù)變得更加多樣化,并結(jié)合不同的需求衍生出類型眾多的網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)大致可以分為 4 種類型,分別是通用網(wǎng)絡(luò)爬蟲聚焦網(wǎng)絡(luò)爬蟲、增量式網(wǎng)絡(luò)爬蟲、深層網(wǎng)絡(luò)爬蟲。
1.通用網(wǎng)絡(luò)爬蟲 通用網(wǎng)絡(luò)爬蟲 ( General Purpose Web Crawler ) 又稱全網(wǎng)爬蟲 ( Scalable Web Crawler ) ,是指訪問全互聯(lián)網(wǎng)資源的網(wǎng)絡(luò)爬蟲。通用網(wǎng)絡(luò)爬蟲是“互聯(lián)網(wǎng)時(shí)代”早期出現(xiàn)的傳統(tǒng)網(wǎng)絡(luò)爬蟲,它是搜索引擎 (如百度、谷歌、雅虎等) 抓取系統(tǒng)的重要組成部分,主要用于將互聯(lián)網(wǎng)中的網(wǎng)頁下載到本地,形成一個(gè)互聯(lián)網(wǎng)內(nèi)容的鏡像備份。
2.聚焦網(wǎng)絡(luò)爬蟲
聚焦網(wǎng)絡(luò)爬蟲 (Focused Crawler ) 又稱主題網(wǎng)絡(luò)爬蟲( Topical Crawler ),是指有選擇性地訪問那些與預(yù)定主題相關(guān)網(wǎng)頁的網(wǎng)絡(luò)爬蟲,它根據(jù)預(yù)先定義好的目標(biāo),有選擇性地訪問與目標(biāo)主題相關(guān)的網(wǎng)頁,獲取所需要的數(shù)據(jù)與通用網(wǎng)絡(luò)爬蟲相比,聚焦網(wǎng)絡(luò)爬蟲只需要訪問與預(yù)定主題相關(guān)的網(wǎng)頁,這不僅減少了訪問和保存的頁面數(shù)量,而且提高了網(wǎng)頁的更新速度,可見,聚焦網(wǎng)絡(luò)爬蟲在一定程度度節(jié)省了網(wǎng)絡(luò)資源,能滿足一些特定人群采集特定領(lǐng)域數(shù)據(jù)的需求。
3.增量式網(wǎng)絡(luò)爬蟲 增量式網(wǎng)絡(luò)爬蟲 (Incremental Web Crawler) 是指對已下載的網(wǎng)頁采取增量式更新,只抓取新產(chǎn)生或者已經(jīng)發(fā)生變化的網(wǎng)頁的網(wǎng)絡(luò)爬蟲。 增量式網(wǎng)絡(luò)爬蟲只會(huì)抓取新產(chǎn)生的或內(nèi)容變化的網(wǎng)頁,并不會(huì)重新抓取內(nèi)容未發(fā)生變化的網(wǎng)頁,這樣可以有效地減少網(wǎng)頁的下載量,減少訪問時(shí)間和存儲空間的耗費(fèi),但是增加了網(wǎng)頁抓取算法的復(fù)雜度和實(shí)現(xiàn)難度。
4.深層網(wǎng)絡(luò)爬蟲 深層網(wǎng)絡(luò)爬蟲 ( Deep Web Crawler) 是指抓取深層網(wǎng)頁的網(wǎng)絡(luò)爬蟲,它要抓取的網(wǎng)頁層次比較深,需要通過定的附加策略才能夠自動(dòng)抓取,實(shí)現(xiàn)難度較大。
3.爬蟲命名組件
?1.爬蟲調(diào)度器(Scheduler):負(fù)責(zé)管理整個(gè)爬蟲的調(diào)度流程,包括URL的管理和調(diào)度等。
2.網(wǎng)頁下載器(Downloader):負(fù)責(zé)下載網(wǎng)頁內(nèi)容,可以使用Python中的requests庫或者Scrapy框架中的下載器等。
3.網(wǎng)頁解析器(Parser):負(fù)責(zé)解析網(wǎng)頁內(nèi)容,提取出需要的信息,可以使用Python中的BeautifulSoup庫或者Scrapy框架中的解析器等。
4.數(shù)據(jù)存儲器(Pipeline):負(fù)責(zé)將解析出來的數(shù)據(jù)存儲到數(shù)據(jù)庫或者文件中,可以使用Python中的MySQLdb庫或者Scrapy框架中的數(shù)據(jù)存儲器等。
二、網(wǎng)絡(luò)爬蟲的應(yīng)用場景
隨著互聯(lián)網(wǎng)信息的“爆炸”,網(wǎng)絡(luò)爬蟲漸漸為人們所熟知,并被應(yīng)用到了社會(huì)生活的眾多領(lǐng)域。作為一種自動(dòng)采集網(wǎng)頁數(shù)據(jù)的技術(shù),很多人其實(shí)并不清楚網(wǎng)絡(luò)爬蟲具體能應(yīng)用到什么場景。事實(shí)上,大多數(shù)依賴數(shù)據(jù)支撐的應(yīng)用場景都離不開網(wǎng)絡(luò)爬蟲,包括搜索引擎、輿情分析與監(jiān)測、聚合平臺、出行類軟件等。
1.搜索引擎 搜索引擎是通用網(wǎng)絡(luò)爬蟲最重要的應(yīng)用場景之一,它會(huì)將網(wǎng)絡(luò)爬蟲作為最基礎(chǔ)的部分一一互聯(lián)網(wǎng)信息的采集器,讓網(wǎng)絡(luò)爬蟲自動(dòng)到互聯(lián)網(wǎng)中抓取數(shù)據(jù)。例如,谷歌、百度、必應(yīng)等搜索引擎都是利用網(wǎng)絡(luò)爬蟲技術(shù)從互聯(lián)網(wǎng)上采集海量的數(shù)據(jù)。
2.輿情分析與檢測 政府或企業(yè)通過網(wǎng)絡(luò)爬蟲技術(shù)自動(dòng)采集論壇評論、在線博客新聞媒體或微博等網(wǎng)站中的海量數(shù)據(jù),采用數(shù)據(jù)挖掘的相關(guān)方法(如詞頻統(tǒng)計(jì)、文本情感計(jì)算、主題識別等)發(fā)掘輿情熱點(diǎn),跟蹤目標(biāo)話題,并根據(jù)一定的標(biāo)準(zhǔn)采取相應(yīng)的輿情控制與引導(dǎo)措施。例如,百度熱點(diǎn)排行榜、微博熱搜排行榜。
3.聚合平臺 如今出現(xiàn)的很多聚合平臺,如返利網(wǎng)、慢慢買等,也是網(wǎng)絡(luò)爬蟲技術(shù)的常見的應(yīng)用場景,這些平臺就是運(yùn)用網(wǎng)絡(luò)爬蟲技術(shù)對一些電商平臺上的商品信息進(jìn)行采集,將所有的商品信息放到自己的平臺上展示,并提供橫向數(shù)據(jù)的比較,幫助用戶尋找實(shí)惠的商品價(jià)格。例如,用戶在慢慢買平臺搜索華為智能手表后,平臺上展示了很多款華為智能手表的價(jià)格分析及價(jià)格走勢等信息。
4.出行類軟件 出行類軟件,比如飛豬、攜程、去哪兒等,也是網(wǎng)絡(luò)爬蟲應(yīng)用比較多的場景。這類應(yīng)用運(yùn)用網(wǎng)絡(luò)爬蟲技術(shù)不斷地訪問交通出行的官方售票網(wǎng)站刷新余票,一旦發(fā)現(xiàn)有新的余票便會(huì)通知用戶付款買票。不過,官方售票網(wǎng)站并不歡迎網(wǎng)絡(luò)爬蟲的這種行為,因?yàn)楦哳l率地訪問網(wǎng)頁極易造成網(wǎng)站出現(xiàn)癱瘓的情況。
三、爬蟲協(xié)議
1.Robots 協(xié)議
Robots 協(xié)議又稱爬蟲協(xié)議,它是國際互聯(lián)網(wǎng)界通行的道德規(guī)范,用于保護(hù)網(wǎng)站數(shù)據(jù)和敏感信息,確保網(wǎng)站用戶的個(gè)人信息和隱私不受侵犯。為了讓網(wǎng)絡(luò)爬蟲了解網(wǎng)站的訪問范圍,網(wǎng)站管理員通常會(huì)在網(wǎng)站的根目錄下放置一個(gè)符合 Robots 協(xié)議的 robots.txt 文件通過這個(gè)文件告知網(wǎng)絡(luò)爬蟲在抓取該網(wǎng)站時(shí)存在哪些限制,哪些網(wǎng)頁是允許被抓取的,哪些網(wǎng)頁是禁止被抓取的。
2.robots.txt 文件
當(dāng)網(wǎng)絡(luò)爬蟲訪問網(wǎng)站時(shí),應(yīng)先檢查該網(wǎng)站的根目錄下是否存在 robots.txt 文件。若 robots.txt 文件不存在則網(wǎng)絡(luò)爬蟲會(huì)訪問該網(wǎng)站上所有被口令保護(hù)的頁面;若robots.txt 文件存在,則網(wǎng)絡(luò)爬蟲會(huì)按照該文件的內(nèi)容確定訪問網(wǎng)站的范圍。robots.txt是網(wǎng)站管理者寫給爬蟲的一封信,里面描述了網(wǎng)站管理者不希望爬蟲做的事,比如:不要訪問某個(gè)文件、文件夾,禁止某些爬蟲的訪問,限制爬蟲訪問網(wǎng)站的頻率。在抓取網(wǎng)頁之前,應(yīng)該先閱讀robots.txt,了解并執(zhí)行網(wǎng)站管理者制定的爬蟲規(guī)則。robots.txt 文件中的內(nèi)容有著一套通用的寫作規(guī)范下面以豆瓣網(wǎng)站根目錄下的 robots.txt 文件為例,分析robots.txt 文件的語法規(guī)則。
1.User-agent:用于指定網(wǎng)絡(luò)爬蟲的名稱。若該選項(xiàng)的值為“*”,則說明 robots.txt 文件對任何網(wǎng)絡(luò)爬蟲均有效。帶有“*”號的 Useragent 選項(xiàng)只能出現(xiàn)一次。例如,示例的第一條語句 User-agent:*。
2.Disallow: 用于指定網(wǎng)絡(luò)爬蟲禁止訪問的目錄。若 Disallow 選項(xiàng)的內(nèi)容為空,說明網(wǎng)站的任何內(nèi)容都是被允許訪問的。在robots.txt 文件中,至少要有一個(gè)包含 Disallow 選項(xiàng)的語句。例如,Disallow: /subject search 禁止網(wǎng)絡(luò)爬蟲訪問目錄/subject search。
3.Allow: 用于指定網(wǎng)絡(luò)爬蟲允許訪問的目錄。例如,Alow: /ads.txt 表示允許網(wǎng)絡(luò)爬蟲訪問目錄/ads.txt。
4.Sitemap:用于告知網(wǎng)絡(luò)蟲網(wǎng)站地圖的路徑。例如,Sitemap:https://www.douban.com/sitemap indexxml和https://www.douban.com/sitemapU pdatedindexxml這兩個(gè)路徑都是網(wǎng)站地圖,主要說明網(wǎng)站更新時(shí)間、更新頻率、網(wǎng)址重要程度等信息。
四、網(wǎng)絡(luò)爬蟲的工作原理
通用網(wǎng)絡(luò)爬蟲的采集目標(biāo)是整個(gè)互聯(lián)網(wǎng)上的所有網(wǎng)頁,它會(huì)從一個(gè)或多個(gè)初始URL開始,獲取初始URL對應(yīng)的網(wǎng)頁數(shù)據(jù),并不斷從該網(wǎng)頁數(shù)據(jù)中抽取新的 URL放到隊(duì)列中,直至滿足一定的條件后停止。
(1)獲取初始 URL。既可以由用戶指定,也可以由待采集的初始網(wǎng)頁指定。 https://www.baidu.com/ (2)抓取頁面,并獲得新 URL。根據(jù)初始URL抓取對應(yīng)的網(wǎng)頁之后將該網(wǎng)頁存儲到原始網(wǎng)頁數(shù)據(jù)庫中,并且在抓取網(wǎng)頁的同時(shí)對網(wǎng)頁內(nèi)容進(jìn)行解析,并從中提取出新 URL。 (3)將新 URL放入U(xiǎn)RL隊(duì)列。有了新URL之后,我們需要將新URL放入U(xiǎn)RL隊(duì)列中。 (4)讀取新URL。從URL隊(duì)列中讀取新URL,并根據(jù)該 URL獲取對應(yīng)網(wǎng)頁數(shù)據(jù),同時(shí)從新網(wǎng)頁中抽取新的URL。 (5)是否滿足停止條件。若網(wǎng)絡(luò)爬蟲滿足設(shè)置的停止條件,則停止采集;若網(wǎng)絡(luò)爬蟲沒有滿足設(shè)置的停止條件,則繼續(xù)根據(jù)新 URL抓取對應(yīng)的網(wǎng)頁,并重復(fù)步驟 (2) ~ (5).
五、網(wǎng)絡(luò)爬蟲爬取網(wǎng)頁的流程
(1)選擇一些網(wǎng)頁,將這些網(wǎng)頁的鏈接作為種子URL放入待抓取URL隊(duì)列中。 (2)從待抓取URL隊(duì)列中依次讀取URL。 (3)過DNS解析URL,把URL地址轉(zhuǎn)換為網(wǎng)站服務(wù)器所對應(yīng)的IP地址。 (4)將IP地址和網(wǎng)頁相對路徑名稱交給網(wǎng)頁下載器,網(wǎng)頁下載器負(fù)責(zé)網(wǎng)頁內(nèi)容的下載。 (5)網(wǎng)頁下載器將相應(yīng)網(wǎng)頁的內(nèi)容下載到本地。 (6)將下載到本地的網(wǎng)頁存儲到頁面庫中,同時(shí)將使用過的URL放入到已抓取的 URL隊(duì)列中,避免重復(fù)抓取。 (7)對于剛下載的網(wǎng)頁中抽取出所包含的 URL信息。 (8)在已抓取URL隊(duì)列中檢查抽取的 URL是否被下載過。如果它還未被下載過,則將這個(gè) URL放入待抓取 URL 隊(duì)列中。如此重復(fù) (2)(8),直到待抓取URL隊(duì)列為空。
六、開發(fā)網(wǎng)絡(luò)爬蟲的語言
1.PHP:PHP語言的優(yōu)點(diǎn)是語法簡潔,容易上手,擁有豐富的網(wǎng)絡(luò)爬蟲功能模塊;缺點(diǎn)是對多線程的支持不太友好,需要借助擴(kuò)展實(shí)現(xiàn)多線程技術(shù),并發(fā)處理的能力相對較弱。2.Go:Go語言的優(yōu)點(diǎn)是高并發(fā)能力強(qiáng)、開發(fā)效率高、豐富的標(biāo)準(zhǔn)庫通過Go語言開發(fā)的網(wǎng)絡(luò)爬蟲程序性能更好;缺點(diǎn)是普及性不高。3.C++:C語言的優(yōu)點(diǎn)是運(yùn)行速度快、性能強(qiáng);缺點(diǎn)是學(xué)習(xí)成本高代碼成型速度慢。4.Java:Java在網(wǎng)絡(luò)爬蟲方向已經(jīng)形成了完善的生態(tài)圈,非常適合開發(fā)大型網(wǎng)絡(luò)爬蟲項(xiàng)目,但重構(gòu)成本比較高。5.Python:使用Python在網(wǎng)絡(luò)爬蟲方向已經(jīng)形成完善的生態(tài)圈,它擁有嬌俏的多線程處理能力,但是網(wǎng)頁解析能力不夠強(qiáng)大。
柚子快報(bào)激活碼778899分享:什么是網(wǎng)絡(luò)爬蟲?認(rèn)識網(wǎng)絡(luò)爬蟲
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。