999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Crawler4j和Quartz的分布式爬蟲系統

2020-05-11 12:01:11劉曉東林鳳德朱文歡
科技創新與應用 2020年13期

劉曉東 林鳳德 朱文歡

摘? 要:網絡爬蟲是實現數據分析的重要基礎,通過網絡爬蟲可實現對數據的獲取。針對爬蟲的渠道廣、數量多且雜、單點效率低的問題,引入了輕量級的多線程爬蟲框架Crawler4j和分布式定時任務調度框架Quartz,文章主要基于這兩個框架來搭建穩定、高效的分布式爬蟲系統。

關鍵詞:網絡爬蟲;分布式;Crawler4j;Quartz

Abstract: Web crawler is an important foundation of data analysis, through which data can be acquired. Aiming at the problem of crawler's wide channel, large number and miscellaneous, and low efficiency of single point, the lightweight multi-threaded crawler framework Crawler4j and the distributed timed task scheduling framework Quartz are introduced. This paper mainly builds a stable and efficient distributed crawler system based on these two frameworks.

網絡爬蟲(Web Crawler)是指按照特定的方式,自動獲取網絡中大量數據(包括結構化數據、半結構化數據,以及非結構化數據)的程序或者腳本。在大數據時代,數據就是財富,得數據者得天下,所以作為獲取網絡數據的網絡爬蟲技術將越來越受到重視。網絡爬蟲技術不僅涉及到網絡知識、網頁前后端知識,而且還包含各種輔助工具,是個綜合的技術[1]。本文通過開源框架Crawler4j[2]和Quartz[3]來構建定時循環、穩定、快速的多線程分布式爬蟲系統,最終實現爬蟲的高效數據采集功能。

2 技術選型

2.1 Quartz中集成Crawler4j

Crawler4j是一款基于Java的輕量級單機開源爬蟲框架[2],該框架的特點是實現簡單、速度快、容易上手,同時該框架支持多線程、過濾重復url、垂直獲取數據等功能。在使用Crawler4j框架時,需要關注兩個重要的類,一個類是:WebCrawler類,它負責匹配url規則、解析html頁面和提取所需數據;另外一個類為:Controller類,它用來控制爬蟲的各種狀態。對于Crawler4j的配置,需要根據不同的爬蟲任務來進行定制化設計,如setMaxDepthOfCrawling()[2]就是配置最大深度,setMaxPagesToFetch()[2]就是頁面抓取的最大數量,對于不同的配置,需要查看官方文檔[2]。

Quartz是任務調度領域的一個開源項目[3],其最大的特點是擁有豐富的功能,它可以用來創建或者運行少則幾個,多則十個、百個、甚至幾萬個復雜任務。Quartz框架中定時任務部分是在Job類的void execute(JobExecutionContextcontext)[3]方法中執行,如果想要集成Crawler4j爬蟲框架,只需在execute()方法中構造Crawler4j配置及啟動對應配置爬蟲線程,這樣就能夠實現定時爬蟲任務了。啟動爬蟲任務后,用Crawler4j自帶的解析特性來解析對應url返回的頁面。但是這種方法不是通用的,所以對于一些特殊頁面還需要采取自定義解析類來解析。

2.2 分布式實現原理

需要獲取的數據來源渠道眾多,有門戶網站、快訊、自媒體等等。各渠道的數據結構也不統一,這樣便導致每一個任務都很個性化,需要做定制化處理來滿足需求。依托Quartz不僅可以實現成百上千個任務的運行和管理,而且每一個任務都可以做定制化處理[4]。單個節點運行眾多任務的時候,存在著運行效率低、獲取數據不及時、無法高可用等問題。通過引入分布式系統可以有效地提高系統的整體運行效率,同時解決高可用問題,保證系統的穩定運行。

在集群中,每個節點能和數據庫組成一個獨立且完整的應用。Quartz通過數據庫來調度當前節點與其他節點進行協作,每個節點的啟動或停止是相互獨立的行為,它們之間沒有任何通信。Quartz集群在同一個數據庫下,由數據庫中保存狀態來判斷調度任務是否正在執行,并且其他節點不能執行正在執行中的任務,這樣就保證了該任務的實例在集群中是單實例運行的,并且集群中分配任務是按照負載均衡策略來進行[5,6]。當任務在其中一個節點中運行失敗,數據庫中會有狀態的記錄,并且馬上重新分配到另外一個節點中啟動運行,這樣便保證了任務的高可用性。

3 分布式爬蟲系統

3.1 分布式系統搭建

搭建基于Quartz的集群,首先要建立數據庫表結構。運行官方網站docs/dbTables[3]路徑下的腳本文件,在mysql中創建對應的11張表,如圖1所示,它是實現集群的基礎。

其次需要編寫Quartz對應的配置文件,可以在quartz.properties配置,也可以把配置文件寫到對應的configuration中。在配置中特別需要注意isClustered 必須設置為True,否則不能實現分布式集群。

最后就是定義實現Job接口的爬蟲任務類,配置Crawler4j,把對應的配置放在數據庫中。如圖2所示,當任務啟動時就去數據庫獲取對應任務Crawler4j配置,添加到Crawler4j的框架中。用SpringBoot來集成Quartz,啟動SpringBoot就能實現對應的定時任務。

3.2 定制化任務實現

為了滿足定制化任務[7]的需要,以及實現管理端對爬蟲任務的管理和監控,在數據庫表中設計了t_crawler_task(任務)表和t_sched_card(令牌)表。利用這兩張表可以實現對任務的增刪改查,同時滿足對任務的定制化,比如需要對定時實現定制化,只需在cron字段填上定制化的時間就能實現定時任務的定制化。

Quartz實現定時調度系統是將任務開發和任務調度進行分離[6]。開發人員不需要考慮任務的調度問題,只需要考慮任務需要爬取什么數據,然后實現Job接口即可。任務調度可以根據任務自身的情況進行設置,可以在爬蟲管理系統中配置,也可以直接配置在數據庫中。當SpringBoot容器啟動后,系統自動檢測所有實現Job接口的類,并將其初始化為實例,在初始化過程中,系統會讀取每個Job任務已經設置好的調度信息,而后根據配置好的調度信息進行有序調度[7]。

4 結束語

本文通過Crawler4j和Quartz來搭建分布式定時爬蟲系統,分布式節點數量理論上不受限制,且每個節點中的代碼、配置和部署都一模一樣。在集群中任務的數目可以成百上千,同時每一個任務可以在Crawler4j中配置多線程,從而大大提高了爬蟲的效率。目前實現的分布式系統穩定,超過半年沒有出現過宕機的情況,而且開發簡單,高效。

當然該分布式系統依然存在一些不足需要改進:

(1)本系統還需要開發爬蟲管理系統,用來監控和管理爬蟲任務。

(2)爬蟲系統需要設計更加通用的解析頁面方式,以便能夠快速地通過修改配置文件而不是重新修改對應的代碼來解決眾多渠道改版所帶來的爬蟲實現問題。

參考文獻:

[1]王敏.分布式網絡爬蟲的研究與實現[D].東南大學,2017.

[2]https://github.com/yasserg/crawler4j[EB/OL].

[3]http://www.quartz-scheduler.org/[EB/OL].

[4]張康.基于Quartz的分布式定時任務調度模塊的設計與實現[D].南京大學,2019.

[5]段子飛.支持Ajax的Deep Web網絡爬蟲系統的設計與實現[D].華南理工大學,2015.

[6]魏麗娟.基于hadoop的網絡爬蟲技術研究[D].武漢理工大學,2013.

[7]于成龍,于洪波.網絡爬蟲技術研究[J].東莞理工學院學報,2011,18(3):25-29.

主站蜘蛛池模板: 五月天久久综合| 亚洲成人免费在线| 一本大道香蕉高清久久| 国产00高中生在线播放| 久久精品国产免费观看频道| 精品欧美一区二区三区久久久| 日本a级免费| 国产一级毛片在线| 欧美日韩资源| 欧美国产在线看| 色综合成人| 97超碰精品成人国产| 国产v精品成人免费视频71pao| 国产SUV精品一区二区6| 无码乱人伦一区二区亚洲一| 91国内在线观看| 欧洲亚洲欧美国产日本高清| 福利视频久久| 久久人妻xunleige无码| 精品一区二区三区中文字幕| 国产一区二区福利| 国产毛片不卡| 免费观看男人免费桶女人视频| 国产小视频a在线观看| 欧美成人综合在线| 久久亚洲天堂| 免费女人18毛片a级毛片视频| 日韩天堂在线观看| 婷婷综合在线观看丁香| 久青草免费在线视频| 波多野结衣中文字幕久久| 国产午夜无码专区喷水| 久久综合色视频| 国产精品久久精品| 日本精品影院| 国产精品手机在线观看你懂的| 五月天香蕉视频国产亚| 久久精品一卡日本电影| 伊人激情综合网| 国产成人亚洲综合A∨在线播放| 国产日韩av在线播放| 久草视频精品| 9丨情侣偷在线精品国产| 最新国产高清在线| 欧美精品一区二区三区中文字幕| 國產尤物AV尤物在線觀看| 最新精品久久精品| 国产一区二区三区在线无码| 亚洲色图欧美激情| 在线综合亚洲欧美网站| 免费A∨中文乱码专区| 91在线一9|永久视频在线| 亚洲九九视频| 国产SUV精品一区二区6| 老司国产精品视频| 成人日韩欧美| 99精品一区二区免费视频| 午夜天堂视频| 亚洲综合婷婷激情| 亚洲成人在线免费| 亚洲国产天堂久久综合226114| 久久超级碰| 毛片免费观看视频| 久久综合九色综合97婷婷| 国产成人精品一区二区免费看京| 国产一区亚洲一区| 国产成本人片免费a∨短片| 国产激爽大片在线播放| 四虎影视无码永久免费观看| 好久久免费视频高清| 久久精品国产精品青草app| 久一在线视频| 亚洲人成人无码www| 日韩欧美国产成人| 538国产视频| 久久精品一卡日本电影| 丁香五月婷婷激情基地| 中文字幕亚洲精品2页| 久久99国产乱子伦精品免| 成年女人a毛片免费视频| 国产成人一二三| 久久香蕉国产线看精品|