如何進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)抓取?

- 從Web抓取開始

Web爬網(wǎng)是指從某些網(wǎng)站提取特定的HTML數(shù)據(jù)。簡而言之,我們可以將網(wǎng)絡(luò)爬蟲視為一個(gè)特定的程序,旨在以定向和收集數(shù)據(jù)的方式抓取網(wǎng)站。但是,我們無法提前獲取包含許多網(wǎng)頁的網(wǎng)站中所有網(wǎng)頁的URL地址。因此,關(guān)注我們的是如何從網(wǎng)站獲取所有HTML網(wǎng)頁。

- 通用Web爬蟲算法

  • 從一個(gè)名為種子的初始URL列表開始。
  • 訪問這些網(wǎng)址。
  • 從頁面中檢索所需信息。
  • 識別頁面上的所有超鏈接。
  • 將鏈接添加到URL隊(duì)列,稱為crawler frontier。
  • 遞歸訪問來自爬網(wǎng)程序邊界的URL。

如何抓取網(wǎng)站

- 構(gòu)建Web爬蟲的兩個(gè)主要步驟

要構(gòu)建Web爬網(wǎng)程序,必須執(zhí)行的步驟是下載Web頁面。這并不容易,因?yàn)閼?yīng)考慮許多因素,例如如何更好地利用本地帶寬,如何優(yōu)化DNS查詢,以及如何通過合理分配Web請求來釋放服務(wù)器中的流量。我們獲取Web后頁面,HTML頁面的復(fù)雜性分析緊隨其后。事實(shí)上,我們無法直接獲取所有HTML網(wǎng)頁。此處還有另一個(gè)問題,即如何在動(dòng)態(tài)網(wǎng)站的任何地方使用AJAX時(shí)檢索由Javascript生成的內(nèi)容。此外,互聯(lián)網(wǎng)上頻繁出現(xiàn)的蜘蛛陷阱會產(chǎn)生無數(shù)次請求或?qū)е聵?gòu)造不良的爬蟲崩潰。

雖然在構(gòu)建網(wǎng)絡(luò)爬蟲時(shí)我們應(yīng)該注意很多事情,但是,在大多數(shù)情況下,我們只想為特定網(wǎng)站創(chuàng)建一個(gè)抓取工具,而不是像Google抓取工具那樣構(gòu)建一個(gè)通用網(wǎng)站。因此,我們最好對目標(biāo)網(wǎng)站的結(jié)構(gòu)進(jìn)行深入研究,并選擇一些有價(jià)值的鏈接進(jìn)行跟蹤,以防止冗余或垃圾網(wǎng)址的額外成本。更重要的是,如果我們能夠找到關(guān)于Web結(jié)構(gòu)的正確爬行路徑,我們可以嘗試僅按照預(yù)定義的順序從目標(biāo)網(wǎng)站抓取我們感興趣的內(nèi)容。

例如,如果我們要抓取內(nèi)容mindhack.cn,我們發(fā)現(xiàn)了兩種我們感興趣的頁面:

1.文章列表,例如主頁面,或帶有/ page / \ d + /等的URL。

通過檢查Firebug,我們可以發(fā)現(xiàn)每篇文章的鏈接都是h1下的“標(biāo)簽”。

2.文章內(nèi)容,例如/ 2008/09/11 / machine-learning-and-ai-resources /,其中包括完整的文章內(nèi)容。

因此,我們可以從主頁面開始,并從入口頁面檢索其他鏈接 - wp-pagenavi。具體來說,我們需要定義一個(gè)路徑:我們只關(guān)注下一頁,這意味著我們可以從頭到尾遍歷所有頁面,并且可以從重復(fù)判斷中解脫出來。然后,列表頁面中的具體文章鏈接將是我們要存儲的URL。

- 一些爬行技巧

  • 抓取深度 - 您希望抓取工具遍歷的輸入頁面的點(diǎn)擊次數(shù)。

在大多數(shù)情況下,深度為5足以從大多數(shù)網(wǎng)站進(jìn)行爬網(wǎng)。

  • 分布式抓取 - 抓取工具將嘗試同時(shí)抓取網(wǎng)頁。
  • 暫停 - 抓取工具在抓取下一頁之前暫停的時(shí)間長度。

設(shè)置爬蟲的速度越快,服務(wù)器上的設(shè)置就越難。頁面點(diǎn)擊之間至少5-10秒。

  • URL模板 - 模板將確定爬網(wǎng)程序需要數(shù)據(jù)的頁面。
  • 保存日志 - 保存的日志將存儲訪問過的URL以及轉(zhuǎn)換為數(shù)據(jù)的URL。

它用于調(diào)試并防止重復(fù)爬網(wǎng)訪問的站點(diǎn)。

尋找一種抓取數(shù)據(jù)的工具

隨著網(wǎng)絡(luò)爬行,今天存在重大的戰(zhàn)術(shù)挑戰(zhàn):

  • 目標(biāo)網(wǎng)站阻止IP地址
  • 不均勻或不規(guī)則的網(wǎng)狀結(jié)構(gòu)
  • AJAX加載的內(nèi)容
  • 實(shí)時(shí)延遲
  • 反爬行積極的網(wǎng)站

解決所有問題并不是一件容易的事,它甚至可能很麻煩并且可能耗費(fèi)時(shí)間。幸運(yùn)的是,現(xiàn)在您不需要像過去那樣抓取網(wǎng)站并陷入技術(shù)問題,因?yàn)榻ㄗh從目標(biāo)網(wǎng)站抓取數(shù)據(jù)的新方法。用戶不需要處理復(fù)雜的配置或編碼來自己構(gòu)建爬蟲,而是可以將更多精力集中在各自業(yè)務(wù)領(lǐng)域的數(shù)據(jù)分析上。

我提到的這種方法是一種自動(dòng)網(wǎng)絡(luò)爬蟲 -Octoparse,可以為任何人提供爬行。用戶可以使用內(nèi)置工具和API使用用戶友好的點(diǎn)擊式UI來抓取數(shù)據(jù)。此應(yīng)用程序中提供了許多其他擴(kuò)展,以便在一些配置步驟中處理不斷增加的問題,可以通過其強(qiáng)大的實(shí)用程序以高效的方式解決問題,包括:

  • IP代理服務(wù)器,以防止IP阻止
  • 內(nèi)置Regex工具,可重新格式化數(shù)據(jù)字段
  • AJAX設(shè)置加載動(dòng)態(tài)內(nèi)容
  • 云服務(wù)分割任務(wù)和加速提取等

寶寶起名 起名

本站所有相關(guān)知識僅供大家參考、學(xué)習(xí)之用,部分來源于互聯(lián)網(wǎng),其版權(quán)均歸原作者及網(wǎng)站所有,如無意侵犯您的權(quán)利,請與小編聯(lián)系,我們將會在第一時(shí)間核實(shí)并給予反饋。
相關(guān)期刊推薦
湖北農(nóng)機(jī)化

湖北農(nóng)機(jī)化

農(nóng)業(yè)基礎(chǔ)科學(xué) - 省級期刊

求學(xué)

求學(xué)

合作期刊 - 省級期刊

資源信息與工程

資源信息與工程

冶金工業(yè) - 省級期刊

成長

成長

合作期刊 - 省級期刊

黑龍江科學(xué)

黑龍江科學(xué)

合作期刊 - 省級期刊

現(xiàn)代商貿(mào)工業(yè)

現(xiàn)代商貿(mào)工業(yè)

合作期刊 - 國家級期刊

畜禽業(yè)

畜禽業(yè)

合作期刊 - 省級期刊

低碳世界

低碳世界

合作期刊 - 國家級期刊

山西化工

山西化工

一般化學(xué)工業(yè) - 省級期刊

建筑技術(shù)開發(fā)

建筑技術(shù)開發(fā)

合作期刊 - 國家級期刊

城建檔案

城建檔案

合作期刊 - 國家級期刊