如何進(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ù)和加速提取等
湖北農(nóng)機(jī)化
農(nóng)業(yè)基礎(chǔ)科學(xué) - 省級期刊
求學(xué)
合作期刊 - 省級期刊
資源信息與工程
冶金工業(yè) - 省級期刊
成長
合作期刊 - 省級期刊
黑龍江科學(xué)
合作期刊 - 省級期刊
現(xiàn)代商貿(mào)工業(yè)
合作期刊 - 國家級期刊
畜禽業(yè)
合作期刊 - 省級期刊
低碳世界
合作期刊 - 國家級期刊
山西化工
一般化學(xué)工業(yè) - 省級期刊
建筑技術(shù)開發(fā)
合作期刊 - 國家級期刊
城建檔案
合作期刊 - 國家級期刊



















