網(wǎng)頁(yè)抓取和網(wǎng)頁(yè)爬取的區(qū)別
譯文【51CTO.com快譯】人們有時(shí)會(huì)錯(cuò)誤地將 “網(wǎng)絡(luò)抓取”和 網(wǎng)絡(luò)爬取”這兩個(gè)術(shù)語(yǔ)作為同義詞使用。盡管它們密切相關(guān),但它們是不同的動(dòng)作,需要適當(dāng)描述——至少這樣你就可以知道某個(gè)時(shí)間點(diǎn)哪一個(gè)最適合你的需要,這樣你就能理解它們的區(qū)別。
讓我們深入了解這兩個(gè) Web 操作中的本質(zhì)。
什么是網(wǎng)頁(yè)抓???
顧名思義,網(wǎng)絡(luò)抓取是一種從網(wǎng)絡(luò)中提取或清除信息的行為。無(wú)論目標(biāo)數(shù)據(jù)如何,網(wǎng)頁(yè)抓取都可以使用腳本語(yǔ)言和專用抓取工具實(shí)現(xiàn)自動(dòng)化,或者通過(guò)復(fù)制和粘貼手動(dòng)完成。當(dāng)然,手動(dòng)網(wǎng)頁(yè)抓取并不實(shí)用。雖然編寫抓取腳本可能會(huì)有所幫助,但它可能成本高且技術(shù)性強(qiáng)。
然而,使用自動(dòng)化的無(wú)代碼網(wǎng)絡(luò)抓取工具可以使一過(guò)程變得簡(jiǎn)單和快速,而不會(huì)造成巨額損失。
為什么要抓取網(wǎng)頁(yè)?
隨著每天數(shù)百萬(wàn)條信息被刪除,數(shù)據(jù)抓取現(xiàn)在已成為互聯(lián)網(wǎng)新趨勢(shì)的一部分。盡管如此,Statista仍然估計(jì),僅在 2020 年互聯(lián)網(wǎng)上生成的數(shù)據(jù)量就為 64.2 澤字節(jié)。該公司預(yù)測(cè),到 2025 年這個(gè)值將增加 179% 以上。
大型組織和個(gè)人已將網(wǎng)絡(luò)上可用的數(shù)據(jù)用于包括但不限于以下目的:預(yù)測(cè)營(yíng)銷、股價(jià)預(yù)測(cè)、銷售預(yù)測(cè)、競(jìng)爭(zhēng)監(jiān)控等目的。有了這些應(yīng)用程序,數(shù)據(jù)明顯是當(dāng)今許多企業(yè)增長(zhǎng)的驅(qū)動(dòng)力。
此外,隨著世界越來(lái)越傾向于自動(dòng)化,數(shù)據(jù)驅(qū)動(dòng)的機(jī)器正在涌現(xiàn)。這些機(jī)器雖然精準(zhǔn),但使用機(jī)器學(xué)習(xí)技術(shù)獲取數(shù)據(jù)。機(jī)器學(xué)習(xí)的嚴(yán)格規(guī)則要求算法隨著時(shí)間的推移從大數(shù)據(jù)中學(xué)習(xí)模式。因此,在沒(méi)有數(shù)據(jù)的情況下訓(xùn)練機(jī)器可能是不可能的。盡管如此,電子商務(wù)網(wǎng)站上的圖像、文本、視頻和產(chǎn)品都是推動(dòng)人工智能世界發(fā)展的寶貴信息。
因此,現(xiàn)有公司、初創(chuàng)企業(yè)和個(gè)人為何求助于網(wǎng)絡(luò)以收集盡可能多的信息并不牽強(qiáng)。這意味著在當(dāng)今的商業(yè)世界中,您擁有的數(shù)據(jù)越多,就越有可能領(lǐng)先于競(jìng)爭(zhēng)對(duì)手。因此,網(wǎng)頁(yè)抓取變得必不可少。
網(wǎng)絡(luò)爬蟲是如何工作的?
網(wǎng)絡(luò)爬蟲使用超文本傳輸協(xié)議 (HTTP) 從使用 GET 方法的網(wǎng)頁(yè)請(qǐng)求數(shù)據(jù)。在大多數(shù)情況下,一旦收到來(lái)自網(wǎng)頁(yè)的有效響應(yīng),抓取工具就會(huì)從客戶端收集更新的內(nèi)容。它通過(guò)將自身附加到包含易于更新的目標(biāo)數(shù)據(jù)的特定 HTML 標(biāo)簽來(lái)實(shí)現(xiàn)。
但是,有許多網(wǎng)頁(yè)抓取方法。例如,抓取機(jī)器人可以進(jìn)化為直接從另一個(gè)網(wǎng)站的數(shù)據(jù)庫(kù)請(qǐng)求數(shù)據(jù),從而從提供商的服務(wù)器獲取實(shí)時(shí)更新的內(nèi)容。這種從數(shù)據(jù)抓取器向另一個(gè)數(shù)據(jù)庫(kù)發(fā)出的請(qǐng)求通常要求提供數(shù)據(jù)的網(wǎng)站提供應(yīng)用程序編程接口 (API),該接口使用定義的身份驗(yàn)證協(xié)議將數(shù)據(jù)抓取器連接到其數(shù)據(jù)庫(kù)。
例如,使用 Python 創(chuàng)建的request.get Web 抓取工具可以使用該方法從源檢索數(shù)據(jù)或使用專用的 Web 抓取庫(kù),例如BeautifulSoup 從網(wǎng)頁(yè)收集呈現(xiàn)的內(nèi)容。使用 JavaScript 構(gòu)建的那些通常依賴于fetch 或Axios連接源并從源獲取數(shù)據(jù)。
獲取數(shù)據(jù)后,抓取工具通常會(huì)將收集到的信息轉(zhuǎn)儲(chǔ)到專用數(shù)據(jù)庫(kù)、JSON 對(duì)象、文本文件或 Excel 文件中。并且由于收集的信息不一致,數(shù)據(jù)清理通常在抓取之后進(jìn)行。
網(wǎng)頁(yè)抓取方法
無(wú)論您是使用第三方自動(dòng)化工具還是從頭開始編寫代碼,網(wǎng)頁(yè)抓取都涉及這些方法中的任何一種或組合:
1. DOM 或標(biāo)簽解析:DOM 解析涉及網(wǎng)頁(yè)的客戶端檢查,以創(chuàng)建顯示所有節(jié)點(diǎn)的深入 DOM 樹。因此,可以輕松地從網(wǎng)頁(yè)中檢索相關(guān)數(shù)據(jù)。
2. 標(biāo)簽抓?。?/strong>在這里,網(wǎng)絡(luò)抓取工具針對(duì)網(wǎng)頁(yè)上的特定標(biāo)簽并收集其內(nèi)容。例如,電子商務(wù)抓取工具可能會(huì)收集所有h2 標(biāo)簽中的內(nèi)容,因?yàn)樗鼈儼a(chǎn)品名稱和評(píng)論。
3. HTTP API 請(qǐng)求:這涉及使用 API 連接到數(shù)據(jù)源。當(dāng)目標(biāo)是從數(shù)據(jù)庫(kù)中檢索更新的內(nèi)容時(shí),這會(huì)很有幫助。
4. 使用語(yǔ)義或元數(shù)據(jù)注釋:此方法利用稱為元數(shù)據(jù)的一組數(shù)據(jù)之間的關(guān)系以流行的方式提取信息。例如,您可能決定從網(wǎng)頁(yè)中檢索與動(dòng)物和國(guó)家相關(guān)的信息。
5. Unix 文本抓?。?/strong>文本抓取使用標(biāo)準(zhǔn)的 Unix 正則表達(dá)式從大量文件或網(wǎng)頁(yè)中獲取匹配數(shù)據(jù)。
什么是網(wǎng)絡(luò)爬蟲以及它是如何工作的?
雖然爬蟲或蜘蛛機(jī)器人可能會(huì)在抓取網(wǎng)站的過(guò)程中下載網(wǎng)站的內(nèi)容,但抓取并不是其最終目標(biāo)。網(wǎng)絡(luò)爬蟲通常會(huì)掃描網(wǎng)站上的信息以檢查特定指標(biāo)。最終它會(huì)了解網(wǎng)站的結(jié)構(gòu)及其全部?jī)?nèi)容。
爬蟲的工作原理是將屬于許多網(wǎng)頁(yè)的唯一資源定位器 (URL) 收集到一個(gè)爬蟲邊界中。然后它使用站點(diǎn)下載器來(lái)檢索內(nèi)容,包括整個(gè) DOM 結(jié)構(gòu),以創(chuàng)建瀏覽網(wǎng)頁(yè)的副本。然后將這些存儲(chǔ)到數(shù)據(jù)庫(kù)中,在查詢時(shí)可以將它們作為相關(guān)結(jié)果列表進(jìn)行訪問(wèn)。
因此,網(wǎng)絡(luò)爬蟲是一種編程軟件,它可以連續(xù)快速地在互聯(lián)網(wǎng)上瀏覽內(nèi)容,并根據(jù)請(qǐng)求組織它們以顯示相關(guān)內(nèi)容。
例如,Googlebot 和 Bingbot 等一些爬蟲會(huì)根據(jù)多種因素對(duì)內(nèi)容進(jìn)行排名。一個(gè)顯著的排名因素是在網(wǎng)站內(nèi)容中使用自然出現(xiàn)的關(guān)鍵字。您可以將此視為賣家從批發(fā)商店收集不同商品,按重要性排列它們,并根據(jù)要求提供與買家最相關(guān)的商品。爬行機(jī)器人通常會(huì)分支到它在爬行網(wǎng)站時(shí)找到的相關(guān)外部鏈接。然后它也會(huì)對(duì)它們進(jìn)行爬網(wǎng)和索引。
不過(guò),除了 Googlebot 和 Bingbot 之外,還有許多爬蟲。除了索引之外,他們中的許多人還提供特定的服務(wù)。
與網(wǎng)絡(luò)爬蟲不同,爬行機(jī)器人不斷地在網(wǎng)上沖浪。本質(zhì)上,它是自動(dòng)觸發(fā)的。然后,當(dāng)它們?cè)诳蛻舳烁聲r(shí),它會(huì)從許多網(wǎng)站收集實(shí)時(shí)內(nèi)容。在網(wǎng)站上移動(dòng)時(shí),他們識(shí)別并選取所有可爬取的鏈接以評(píng)估其所有頁(yè)面上的腳本、HTML 標(biāo)簽和元數(shù)據(jù),但受某種方式限制的除外。有時(shí),蜘蛛機(jī)器人會(huì)利用站點(diǎn)地圖來(lái)達(dá)到相同的目的。然而,帶有站點(diǎn)地圖的網(wǎng)站比沒(méi)有站點(diǎn)地圖的網(wǎng)站抓取速度更快。
網(wǎng)絡(luò)爬蟲的應(yīng)用
與網(wǎng)絡(luò)抓取不同,網(wǎng)絡(luò)抓取有更多應(yīng)用,從搜索引擎優(yōu)化 (SEO) 分析到搜索引擎索引、一般性能監(jiān)控等等。它的部分應(yīng)用程序還可能包括抓取網(wǎng)頁(yè)。
雖然您可能會(huì)手動(dòng)緩慢地抓取網(wǎng)頁(yè),但您無(wú)法自己全部抓取,因?yàn)樗枰臁⒏鼫?zhǔn)確的機(jī)器人;這就是為什么他們有時(shí)稱爬蟲蜘蛛機(jī)器人。
例如,在創(chuàng)建并啟動(dòng)您的網(wǎng)站后,Google 的抓取算法會(huì)在幾天內(nèi)自動(dòng)抓取它,以在人們搜索時(shí)顯示元標(biāo)記、標(biāo)題標(biāo)記和相關(guān)內(nèi)容等語(yǔ)義。
如前所述,根據(jù)其目標(biāo),蜘蛛機(jī)器人可能會(huì)抓取您的網(wǎng)站以提取其數(shù)據(jù)、在搜索引擎中為其編制索引、審核其安全性、將其與競(jìng)爭(zhēng)對(duì)手的內(nèi)容進(jìn)行比較或分析其 SEO 合規(guī)性。但是,盡管它具有積極的一面,例如網(wǎng)絡(luò)抓取工具,但我們無(wú)法在幕后掃除可能惡意使用爬蟲的行為。
網(wǎng)絡(luò)爬蟲的類型
根據(jù)它們的應(yīng)用程序,爬行機(jī)器人有多種形式。以下是不同類型及其作用的列表:
1. 以內(nèi)容為中心的網(wǎng)絡(luò)爬蟲: 這些類型的蜘蛛機(jī)器人收集整個(gè)網(wǎng)絡(luò)的相關(guān)內(nèi)容。最終,它們的工作原理是根據(jù)相關(guān)網(wǎng)站的內(nèi)容與搜索詞的相關(guān)程度對(duì)相關(guān)網(wǎng)站的 URL 進(jìn)行排名。因?yàn)樗鼈儗W⒂跈z索更多與利基相關(guān)的內(nèi)容,所以內(nèi)容或主題爬行機(jī)器人的優(yōu)勢(shì)在于它們使用的資源更少。
2. 內(nèi)部爬蟲: 一些組織為特定目的構(gòu)建內(nèi)部爬蟲。這些可能包括用于檢查軟件漏洞的蜘蛛機(jī)器人。管理它們的責(zé)任通常由熟悉組織軟件架構(gòu)的程序員承擔(dān)。
3. 連續(xù)網(wǎng)絡(luò)爬蟲: 也稱為增量蜘蛛機(jī)器人。漸進(jìn)式爬蟲會(huì)在更新時(shí)反復(fù)瀏覽網(wǎng)站的內(nèi)容。爬行可以是計(jì)劃的或隨機(jī)的,這取決于特定的設(shè)置。
4. 協(xié)同或分布式爬蟲:分布式爬蟲旨在優(yōu)化使用單個(gè)爬蟲時(shí)可能不堪重負(fù)的繁瑣爬行活動(dòng)。他們總是朝著同一個(gè)目標(biāo)共同努力。因此,他們有效地分割了爬行工作負(fù)載。因此,它們通常比傳統(tǒng)的更快、更有效。
5. 監(jiān)控機(jī)器人: 無(wú)論來(lái)源是否授權(quán),這些爬蟲都使用獨(dú)特的算法來(lái)監(jiān)視競(jìng)爭(zhēng)對(duì)手的內(nèi)容和流量。即使他們不妨礙他們監(jiān)控的網(wǎng)站的運(yùn)行,他們也可能開始將流量從其他網(wǎng)站吸引到機(jī)器人的來(lái)源中。雖然人們有時(shí)會(huì)以這種方式使用它們,但它們的積極用途大于缺點(diǎn)。例如,一些組織在內(nèi)部使用它們來(lái)發(fā)現(xiàn)其軟件中的潛在漏洞或改進(jìn) SEO。
6. 并行蜘蛛機(jī)器人: 雖然它們也是分布式的,但并行爬蟲只瀏覽和下載新鮮的內(nèi)容。然而,如果網(wǎng)站不定期更新或包含舊內(nèi)容,他們可能會(huì)忽略該網(wǎng)站。
網(wǎng)絡(luò)爬蟲和網(wǎng)絡(luò)抓取之間的主要區(qū)別
為了縮小解釋范圍,以下是抓取和爬行之間的顯著差異:
1. 與網(wǎng)絡(luò)爬蟲不同,爬蟲不一定需要遵循將數(shù)據(jù)下載到數(shù)據(jù)庫(kù)的模式。它可能會(huì)將其寫入其他文件類型。
2. 網(wǎng)絡(luò)爬蟲更通用,可能在其工作流程中包括網(wǎng)絡(luò)抓取。
3. 抓取機(jī)器人針對(duì)特定的網(wǎng)頁(yè)和內(nèi)容,因此它們可能不會(huì)一次從多個(gè)來(lái)源收集數(shù)據(jù)。
4. 與爬蟲的手動(dòng)觸發(fā)數(shù)據(jù)收集性質(zhì)不同,網(wǎng)絡(luò)爬蟲定期收集實(shí)時(shí)內(nèi)容。
5. 雖然抓取機(jī)器人的目的是在提示時(shí)獲取數(shù)據(jù),但網(wǎng)絡(luò)爬蟲遵循特定的算法。如此多的科技公司使用它們來(lái)獲得實(shí)時(shí)的網(wǎng)絡(luò)洞察力,而且它也是可調(diào)度的。它的用例之一是定期的網(wǎng)絡(luò)流量和 SEO 分析。
6. 爬網(wǎng)涉及串行整個(gè)網(wǎng)絡(luò)下載和基于相關(guān)性的后續(xù)索引。另一方面,網(wǎng)絡(luò)抓取不會(huì)索引檢索到的內(nèi)容。
7. 與功能更廣泛且開發(fā)成本更高的爬行機(jī)器人不同,構(gòu)建抓取工具具有成本效益且耗時(shí)更少。
網(wǎng)絡(luò)爬蟲和網(wǎng)絡(luò)抓取之間的主要相似之處
雖然我們一直認(rèn)為 crawling 和 scaping 在很多方面是不同的,但它們?nèi)匀挥幸恍┫嗨浦帲?/p>
1. 它們都通過(guò)發(fā)出 HTTP 請(qǐng)求來(lái)訪問(wèn)數(shù)據(jù)。
2. 它們都是自動(dòng)化的過(guò)程。因此,它們?cè)跀?shù)據(jù)檢索過(guò)程中提供了更高的準(zhǔn)確性。
3. 網(wǎng)絡(luò)上隨處可見的專用工具可用于抓取或抓取網(wǎng)站。
4. 當(dāng)違反來(lái)源的數(shù)據(jù)保護(hù)條款時(shí),它們都可以用于惡意目的。
5. 網(wǎng)絡(luò)爬蟲和抓取工具會(huì)受到徹底封鎖——通過(guò) IP 壓制或其他方式。
6. 盡管工作流程可能不同,但它們都從 Web 下載數(shù)據(jù)。
您可以阻止在您的網(wǎng)站上爬蟲和抓取嗎?
當(dāng)然,您可以加倍努力,擺脫這些機(jī)器人。但是,雖然您可能希望阻止爬蟲程序訪問(wèn)您的內(nèi)容,但在決定是否應(yīng)該阻止爬蟲程序時(shí)需要小心。與抓取機(jī)器人不同,蜘蛛機(jī)器人的抓取會(huì)影響您網(wǎng)站的增長(zhǎng)。例如,阻止在您的所有網(wǎng)頁(yè)上爬行可能會(huì)損害您的可發(fā)現(xiàn)性,因?yàn)槟罱K可能會(huì)掩蓋具有流量驅(qū)動(dòng)潛力的頁(yè)面。
最好的做法是阻止它們?cè)L問(wèn)私有目錄,例如管理、注冊(cè)和登錄頁(yè)面,而不是直接阻止機(jī)器人。這可確保搜索引擎不會(huì)將這些頁(yè)面編入索引以將它們顯示為搜索結(jié)果。
雖然我們之前提到過(guò)使用 robots.txt,但您可以使用許多其他方法來(lái)保護(hù)您的網(wǎng)站免受機(jī)器人入侵:
1. 您可以使用 CAPTCHA 方法阻止機(jī)器人。
2. 您還可以阻止惡意 IP 地址。
3. 監(jiān)控流量的突然可疑增加。
4. 評(píng)估您的流量來(lái)源。
5. 打擊已知或特定機(jī)器人。
6. 瞄準(zhǔn)潛在的惡意機(jī)器人。
網(wǎng)絡(luò)機(jī)器人可以繞過(guò) CORS 和 Robots.txt 嗎?
然而,當(dāng)涉及不同來(lái)源的軟件之間的交叉交互時(shí),互聯(lián)網(wǎng)遵循嚴(yán)格的規(guī)則。因此,如果資源服務(wù)器未授權(quán)來(lái)自另一個(gè)域的機(jī)器人,Web 瀏覽器會(huì)因此通過(guò)稱為跨域資源策略 (CORS) 的規(guī)則阻止其請(qǐng)求。
因此,如果不使用其 API 或其他方式(如身份驗(yàn)證令牌)來(lái)授權(quán)請(qǐng)求,則很難直接從資源數(shù)據(jù)庫(kù)下載數(shù)據(jù)。此外,當(dāng)在網(wǎng)站上找到 robots.txt 時(shí),它會(huì)明確說(shuō)明抓取某些頁(yè)面的規(guī)則。因此,它還可以防止機(jī)器人訪問(wèn)它們。
但是為了避免這種封鎖,一些機(jī)器人通過(guò)在其請(qǐng)求標(biāo)頭中包含用戶代理來(lái)模仿真實(shí)的瀏覽器。最終,CORS 將此類機(jī)器人視為瀏覽器,并授予它訪問(wèn)網(wǎng)站資源的權(quán)限。由于robots.txt 只阻止機(jī)器人,這種繞過(guò)很容易愚弄它并使其規(guī)則無(wú)能為力。
盡管采取了多項(xiàng)預(yù)防措施,但即使是科技巨頭的數(shù)據(jù)仍然被抓取或抓取。因此,您只能嘗試將控制措施落實(shí)到位。
結(jié)論
盡管存在差異,但正如您現(xiàn)在所看到的,網(wǎng)絡(luò)爬行和抓取是有價(jià)值的數(shù)據(jù)收集技術(shù)。因此,由于它們?cè)趹?yīng)用程序中存在一些關(guān)鍵差異,因此您必須明確定義您的目標(biāo),以了解在特定場(chǎng)景中使用的正確工具。此外,它們是您不想丟棄的重要業(yè)務(wù)工具。如前所述,無(wú)論您是出于某種原因打算抓取網(wǎng)頁(yè)還是抓取網(wǎng)頁(yè),都有許多第三方自動(dòng)化工具可以實(shí)現(xiàn)您的目標(biāo)。所以請(qǐng)隨意利用它們。
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】