分布式爬蟲(chóng)構架
優(yōu)采云 發(fā)布時(shí)間: 2020-05-07 08:02設計爬蟲(chóng)構架 爬蟲(chóng)構架滿(mǎn)足一下功能 (1) 分布式:爬蟲(chóng)應當才能在多臺機器上分布執行。 (2) 可伸縮性:爬蟲(chóng)結構應當才能通過(guò)降低額外的機器和帶寬來(lái)提升抓取速率。 (3) 性能和有效性:爬蟲(chóng)系統必須有效地使用各類(lèi)系統資源,例如,處理器、存儲空間和網(wǎng) 絡(luò )帶寬。 (4) 可擴展性:為了才能支持新的數據格式和新的抓取合同,爬蟲(chóng)構架應當設計成模塊化的 形式。 這里最主要的是爬蟲(chóng)和儲存庫。 其中的爬蟲(chóng)部份階段性地抓取互聯(lián)網(wǎng)上的內容。 存儲庫儲存 爬蟲(chóng)下載出來(lái)的網(wǎng)頁(yè), 是分布式的和可擴充的儲存系統。 在往儲存庫中加載新的內容時(shí)依然 可以讀取儲存庫。整個(gè)爬蟲(chóng)系統可以由一臺抓取機器或多個(gè)爬蟲(chóng)節點(diǎn)組成。 加載復雜的網(wǎng)頁(yè)可以選擇采用 WebKit 模擬瀏覽器處理 js 渲染頁(yè)面獲取 多機并行抓取的分布式系統節點(diǎn)之間的通訊和調度,在一個(gè)爬蟲(chóng)節點(diǎn)上實(shí)現并行抓取分布式爬蟲(chóng)架構,可以 考慮多線(xiàn)程同步 I/O 或者單線(xiàn)程異步 I/O。多線(xiàn)程爬蟲(chóng)須要考慮線(xiàn)程之間的同步問(wèn)題。對單 線(xiàn)程并行抓取來(lái)說(shuō)分布式爬蟲(chóng)架構,異步 I/O 是很重要的基本功能。解析流程 (1)通過(guò)基于正則,Xpath.Csspath 等規則,獲取頁(yè)面指定位置的 html 或文本數據 (2)按照數據格式需求,判斷必要值是否存在,并依據類(lèi)型判別數據正確 (3)通過(guò)驗證的數據步入到數據入隊的緩存隊列等待存入數據庫房 (4)如果數據驗證不通過(guò),則將異常的 url 返回到待抓取 URL 集合中重新抓取關(guān)鍵節點(diǎn)數據說(shuō)明 (1)Web 配置界面:可在界面降低爬取的*敏*感*詞*入口,入庫規則,URL 過(guò)濾規則 (2)控制節點(diǎn):負責將 URl 集合中的待爬地址分發(fā)到多個(gè)工作節點(diǎn)便于并發(fā)的執行爬取工作 (3)工作節點(diǎn):根據待爬的 URL 信息和對應的*敏*感*詞*規則獲取頁(yè)面并解析出數據,并按照抓取的頁(yè) 面獲取相關(guān)聯(lián)的須要爬取的 URL 信息,加入到 URL 集合中等待爬取. (4)解析頁(yè)面:根據*敏*感*詞*提供的解析規則抽取,并驗證數據的入庫合法性,通過(guò)則存入入庫緩沖 隊列中,如果發(fā)覺(jué)有異常,則返回當前 URL 到 URL 集合中重新爬取 URL 集合 Url 集合中的數據項,除了抓取的 url 本身外,額外帶有流程中各環(huán)節處理結果的數據信息,如: 解析異常,會(huì )降低 url 項中的解析異常次數,以便在前面的邏輯中控制重試次數(還有更新次數, 最近成功更新時(shí)間....) 節點(diǎn)配置 根 據 系 統 的 規 模 和 數 據 抓 取 量 的 大 小 , 在 數 據 存 儲 DB 這 塊 , 可 以 根 據 實(shí) 際 情 況 采 用 mongo,hbase 或其它的數據庫,以達到系統儲存的可伸縮性URL 扭轉的消息隊列也可以依據系統規模,如 1 億條數據緩存采用 ssdb,如果須要性能更好可 以采用 kafka 分布式的消息隊列,以便可以便捷的擴充系統運行規模. 爬蟲(chóng)平臺監控須要實(shí)現功能 (1)爬蟲(chóng)運行狀態(tài)監控 a) 爬蟲(chóng)定時(shí)發(fā)送心跳包,監控平臺依照心跳包,監控爬蟲(chóng)的運行狀態(tài) (2)爬蟲(chóng)采集量監控 a) 對爬蟲(chóng)爬取數據的總數的統計 (3)爬蟲(chóng)采集速度監控 /秒 /分 /時(shí) 根據規模需求而定 a) /秒 /分 /時(shí) 根據規模需求而定 (4)定時(shí)電郵發(fā)送運行狀態(tài)和統計信息 a) 定時(shí)發(fā)送,爬蟲(chóng)運行的情況和爬取數據總數


