欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java爬蟲框架的舉例分析

本篇內(nèi)容介紹了“Java爬蟲框架的舉例分析”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

目前創(chuàng)新互聯(lián)建站已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、駐馬店網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

一、架構(gòu)圖

那里搜網(wǎng)絡(luò)爬蟲框架主要針對(duì)電子商務(wù)網(wǎng)站進(jìn)行數(shù)據(jù)爬取,分析,存儲(chǔ),索引。

爬蟲:爬蟲負(fù)責(zé)爬取,解析,處理電子商務(wù)網(wǎng)站的網(wǎng)頁(yè)的內(nèi)容

數(shù)據(jù)庫(kù):存儲(chǔ)商品信息

索引:商品的全文搜索索引

Task隊(duì)列:需要爬取的網(wǎng)頁(yè)列表

Visited表:已經(jīng)爬取過(guò)的網(wǎng)頁(yè)列表

爬蟲監(jiān)控平臺(tái):web平臺(tái)可以啟動(dòng),停止爬蟲,管理爬蟲,task隊(duì)列,visited表。

二、爬蟲

1.      流程

1)       Scheduler啟動(dòng)爬蟲器,TaskMaster初始化taskQueue

2)       Workers從TaskQueue中獲取任務(wù)

3)       Worker線程調(diào)用Fetcher爬取Task中描述的網(wǎng)頁(yè)

4)       Worker線程將爬取到的網(wǎng)頁(yè)交給Parser解析

5)       Parser解析出來(lái)的數(shù)據(jù)送交Handler處理,抽取網(wǎng)頁(yè)Link和處理網(wǎng)頁(yè)內(nèi)容

6)       VisitedTableManager判斷從URLExtractor抽取出來(lái)的鏈接是否已經(jīng)被爬取過(guò),如果沒有提交到TaskQueue中

2.      Scheduler

Scheduler負(fù)責(zé)啟動(dòng)爬蟲器,調(diào)用TaskMaster初始化TaskQueue,同時(shí)創(chuàng)建一個(gè)monitor線程,負(fù)責(zé)控制程序的退出。

何時(shí)退出?

當(dāng)TaskQueue為空,并且Workers中的所有線程都處于空閑狀態(tài)。而這種形勢(shì)在指定10分鐘內(nèi)沒有發(fā)生任何變化。就認(rèn)為所有網(wǎng)頁(yè)已經(jīng)全部爬完。程序退出。

3.      Task Master

任務(wù)管理器,負(fù)責(zé)管理任務(wù)隊(duì)列。任務(wù)管理器抽象了任務(wù)隊(duì)列的實(shí)現(xiàn)。

l        在簡(jiǎn)單應(yīng)用中,我們可以使用內(nèi)存的任務(wù)管理器

l        在分布式平臺(tái),有多個(gè)爬蟲機(jī)器的情況下我們需要集中的任務(wù)隊(duì)列

在現(xiàn)階段,我們用SQLLite作為任務(wù)隊(duì)列的實(shí)現(xiàn)??晒┨娲倪€有redis。

任務(wù)管理器的處理流程:

l        任務(wù)管理器初始化任務(wù)隊(duì)列,任務(wù)隊(duì)列的初始化根據(jù)不同的配置可能不同。增量式的情況下,根據(jù)指定的URL List初始化。而全文爬取的情況下只預(yù)先初始化某個(gè)或幾個(gè)電子商務(wù)網(wǎng)站的首頁(yè)。

l        任務(wù)管理器創(chuàng)建monitor線程,控制整個(gè)程序的退出

l        任務(wù)管理器調(diào)度任務(wù),如果任務(wù)隊(duì)列是持久化的,負(fù)責(zé)從任務(wù)隊(duì)列服務(wù)器load任務(wù)。需要考慮預(yù)取。

l        任務(wù)管理器還負(fù)責(zé)驗(yàn)證任務(wù)的有效性驗(yàn)證,爬蟲監(jiān)控平臺(tái)可以將任務(wù)隊(duì)列中的某些任務(wù)設(shè)為失效?

4.      Workers

Worker線程池,每個(gè)線程都會(huì)執(zhí)行整個(gè)爬取的流程??梢钥紤]用多個(gè)線程池,分割異步化整個(gè)流程。提高線程的利用率。

5.      Fetcher

Fetcher負(fù)責(zé)直接爬取電子商務(wù)網(wǎng)站的網(wǎng)頁(yè)。用HTTP Client實(shí)現(xiàn)。HTTP core 4以上已經(jīng)有NIO的功能, 用NIO實(shí)現(xiàn)。

Fetcher可以配置需不需要保存HTML文件

6.      Parser

Parser解析Fetcher獲取的網(wǎng)頁(yè),一般的網(wǎng)頁(yè)可能不是完好格式化的(XHTML是完美格式化的),這樣就不能利用XML的類庫(kù)處理。我們需要一款比較好的HTML解析器,可以修復(fù)這些非完好格式化的網(wǎng)頁(yè)。

熟悉的第三方工具有TagSoup,nekohtml,htmlparser三款。tagsoup和nekohtml可以將HTML用SAX事件流處理,節(jié)省了內(nèi)存。

已知的第三方框架又使用了哪款作為他們的解析器呢?

l        Nutch:正式支持的有tagsoup,nekohtml,二者通過(guò)配置選擇

l        Droids:用的是nekohtml,Tika

l        Tika:tagsoup

據(jù)稱,tagsoup的可靠性要比nekohtml好,nekohtml的性能比tagsoup好。nekohtml不管是在可靠性還是性能上都比htmlparser好。具體結(jié)論我們還需要進(jìn)一步測(cè)試。

我們還支持regex,dom結(jié)構(gòu)的html解析器。在使用中我們可以結(jié)合使用。

進(jìn)一步,我們需要研究文檔比較器,同時(shí)需要我們保存爬取過(guò)的網(wǎng)站的HTML.可以通過(guò)語(yǔ)義指紋或者simhash來(lái)實(shí)現(xiàn)。在處理海量數(shù)據(jù)的時(shí)候才需要用上。如果兩個(gè)HTML被認(rèn)為是相同的,就不會(huì)再解析和處理。

7.      Handler

Handler是對(duì)Parser解析出來(lái)的內(nèi)容做處理。

回調(diào)方式(visitor):對(duì)于SAX event處理,我們需要將handler適配成sax的content handler。作為parser的回調(diào)方法。不同事件解析出來(lái)的內(nèi)容可以存儲(chǔ)在HandlingContext中。最后由Parser一起返回。

主動(dòng)方式:需要解析整個(gè)HTML,選取自己需要的內(nèi)容。對(duì)Parser提取的內(nèi)容進(jìn)行處理。XML需要解析成DOM結(jié)構(gòu)。方便使用,可以使用Xpath,nodefilter等,但耗內(nèi)存。

ContentHandler:它還包含組件ContentFilter。過(guò)濾content。

URLExtractor負(fù)責(zé)從網(wǎng)頁(yè)中提取符合格式的URL,將URL構(gòu)建成Task,并提交到Task queue中。

8.      VisitedTableManager

訪問表管理器,管理訪問過(guò)的URLs。提取統(tǒng)一接口,抽象底層實(shí)現(xiàn)。如果URL被爬取過(guò),就不會(huì)被添加到TaskQueue中。

三、        Task隊(duì)列

Task隊(duì)列存儲(chǔ)了需要被爬取的任務(wù)。任務(wù)之間是有關(guān)聯(lián)的。我們可以保存和管理這個(gè)任務(wù)關(guān)系。這個(gè)關(guān)系也是URL之間的關(guān)系。保存下來(lái),有助于后臺(tái)形成Web圖,分析數(shù)據(jù)。

Task隊(duì)列在分布式爬蟲集群中,需要使用集中的服務(wù)器存放。一些輕量級(jí)的數(shù)據(jù)庫(kù)或者支持列表的NOSQL都可以用來(lái)存儲(chǔ)??蛇x方案:

l          用SQLLite存儲(chǔ):需要不停地插入刪除,不知性能如何。

l          用Redis存儲(chǔ)

四、        Visited表

Visited表存儲(chǔ)了已經(jīng)被爬的網(wǎng)站。每次爬取都需要構(gòu)建。

l          SQLLite存儲(chǔ):需要?jiǎng)討B(tài)創(chuàng)建表,需要不停地查詢,插入,還需要后臺(tái)定期地清理,不知性能如何。

l          MySQL 內(nèi)存表 hash index

l          Redis: Key value,設(shè)過(guò)期時(shí)間

l          Memcached: key value, value為bloomfilter的值

針對(duì)目前的數(shù)據(jù)量,可以采用SQLLite

五、        爬蟲監(jiān)控管理平臺(tái)

l          啟動(dòng),停止爬蟲,監(jiān)控各爬蟲狀態(tài)

l          監(jiān)控,管理task隊(duì)列,visited表

l          配置爬蟲

l          對(duì)爬蟲爬取的數(shù)據(jù)進(jìn)行管理。在并發(fā)情況下,很難保證不重復(fù)爬取相同的商品。在爬取完后,可以通過(guò)爬蟲監(jiān)控管理平臺(tái)進(jìn)行手動(dòng)排重。

“Java爬蟲框架的舉例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

分享標(biāo)題:Java爬蟲框架的舉例分析
網(wǎng)頁(yè)鏈接:http://aaarwkj.com/article0/pcdjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)用戶體驗(yàn)、定制網(wǎng)站域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
国产91在线观看网站| 久久亚洲一本综合久久| av一区二区日韩电影| 美腿丝袜亚洲综合一区| 日韩专区欧美二区国产| 久久精品一偷一偷国产| 禁止18岁以下观看的视频| 亚洲福利一区福利三区| 欧美激情日韩精品久久久| 久久精品国产精品亚洲片| 熟女中文字幕亚洲一区二区| 久久 久久国内精品亚洲| 国产精品三级国产精品高| 传媒视频免费在线观看| 精品色妇熟妇丰满人妻5| 亚洲精品一区二区三区小| 亚洲综合色一区二区三区四区| 成人激情视频在线网页| 国产精品福利午夜在线| 日韩版色视频在线观看| 中文字幕不卡在线观看不卡| 日产一区二区三区网站| 男女做爰高清免费视频| 日韩精品中文乱码在线观看| 国产三级精品在线免费| 国产欧美日韩在线高清| 日本理论午夜三级在线观看| 亚洲av免费一区二区三区| 亚洲综合日韩欧美一区二区三区| 99久久久国产精品蜜臀| 国产91久久精品一区二区| av在线免费观看青青草原| 亚洲综合一区二区三区不卡 | 亚洲av天堂在线播放| 日韩一区精品视频一区二区| 国产成人综合精品久久| 91九色蝌蚪国产欧美亚洲| 天堂av免费资源在线观看| 伊人激情一区二区三区| 亚洲一级香蕉视频东京热| 精品亚洲韩国一区二区三区|