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

基于Java多線程的智能圖片爬蟲系統(tǒng)的研究與實現(xiàn)

2022-05-30 12:16:27黃子純蔡敏
電腦知識與技術(shù) 2022年22期

黃子純 蔡敏

摘要:針對在傳統(tǒng)的爬蟲系統(tǒng)中,按照一定規(guī)則自動抓取相關(guān)信息時,通常包含大量的無效信息這一問題,提出了一種基于Java多線程的智能圖片爬蟲系統(tǒng)。該系統(tǒng)以爬取圖片為例,利用HttpClient、JSoup、WebMagic框架以及線程池技術(shù),實現(xiàn)了在傳統(tǒng)爬蟲系統(tǒng)基礎(chǔ)上增加圖片篩選模塊,可以智能爬取有效圖片,并且自動過濾重復(fù)圖片,進一步優(yōu)化了基于Java多線程的傳統(tǒng)爬蟲系統(tǒng)。

關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;多線程;HttpClient;JSoup;WebMagic

中圖分類號:TP18? ? ? 文獻標(biāo)識碼:A

文章編號:1009-3044(2022)22-0055-03

1 引言

隨著人工智能領(lǐng)域的不斷發(fā)展,誕生了許多分支研究。不管是語音處理,圖像識別,還是自然語言處理,都面臨著需要大量數(shù)據(jù)集的問題,人工收集數(shù)據(jù)需花費大量的時間與精力。解決這一問題的技術(shù)就是爬蟲技術(shù),因此爬蟲技術(shù)也成為獲取數(shù)據(jù)集的重要工具。

對于傳統(tǒng)的爬蟲來說,爬取得到的數(shù)據(jù)集并不能保證正確性與完整性,以爬取圖片為例,爬取到的圖片一方面會得到重復(fù)圖片。另一方面,既不能保證得到的圖片格式是正確的(比如png或gif格式會直接轉(zhuǎn)為jpg格式) ,也不能保證爬取得到的圖片是完整的(比如下載的圖片只顯示一半) ,因此傳統(tǒng)的爬蟲系統(tǒng)在爬取數(shù)據(jù)之后,反而需要消耗大量時間篩選有效數(shù)據(jù),造成資源浪費,在大數(shù)據(jù)環(huán)境下,數(shù)據(jù)爬蟲的有效性也是非常的重要,因此本文以爬取圖片為例,利用HttpClient、JSoup、WebMagic框架以及線程池技術(shù),實現(xiàn)了智能爬取有效圖片,在爬蟲階段,實現(xiàn)自動過濾重復(fù)圖片,有效提高了圖片的正確性。

2 爬蟲相關(guān)技術(shù)

2.1 爬蟲技術(shù)介紹

爬蟲技術(shù)的出現(xiàn)有效簡化了人工收集數(shù)據(jù)的煩瑣流程,其主要作用是在互聯(lián)網(wǎng)的眾多頁面中,通過特定的程序,按照一定的規(guī)則遍歷網(wǎng)頁信息,爬取所需的信息,并將爬取得到的信息數(shù)據(jù)進行存儲,爬蟲技術(shù)具有網(wǎng)頁采集,網(wǎng)頁分析以及數(shù)據(jù)存儲三個模塊,其特點包括以下幾部分:

分布式——可以在分布式環(huán)境中跨多臺計算機同步進行。

高質(zhì)量——爬蟲技術(shù)獲取得到的頁面普遍質(zhì)量較高[1]。

實時性——對于隨時更新的頁面,例如,新聞、更新小說等,能保持爬取得到的數(shù)據(jù)具有實時性[2]。

可擴展性——爬蟲程序的可擴展性能夠適應(yīng)不同數(shù)據(jù)格式以及不同協(xié)議[3]。

在進行大數(shù)據(jù)分析或者進行數(shù)據(jù)挖掘的時候,需要有數(shù)據(jù)源進行分析。爬蟲技術(shù)的誕生,滿足了對日益增加大量數(shù)據(jù)源的需求,爬蟲技術(shù)自動抓取數(shù)據(jù)內(nèi)容,爬取得到數(shù)據(jù)集,再進行更深層次的數(shù)據(jù)分析、圖片識別、語音識別等人工智能領(lǐng)域方面的研究,獲取更多有價值的信息。

2.2 HttpClient技術(shù)介紹

HttpClient是Java網(wǎng)絡(luò)爬蟲的核心技術(shù)之一,網(wǎng)絡(luò)爬蟲是通過程序自動爬取網(wǎng)絡(luò)上的資源,而互聯(lián)網(wǎng)的訪問網(wǎng)頁協(xié)議使用的都是http協(xié)議,http協(xié)議主要規(guī)則是針對文本、聲音、圖像等之間信息交換的面向事務(wù)的應(yīng)用層協(xié)議[4]。HttpClient在面向http協(xié)議編程時,極大降低了編程的復(fù)雜度,并且其支持最新的協(xié)議版本。

2.3 JSoup技術(shù)介紹

JSoup是一款功能較大的第三方開源HTML解析器,能夠通過對網(wǎng)頁中的文本標(biāo)簽的屬性,針對不同格式的文本內(nèi)容進行解析。通過JSoup提供的一套API,能夠非常方便地對所需數(shù)據(jù)進行解析和操作[5]。JSoup一方面在瀏覽器中找到相應(yīng)源碼后,能夠針對HTML中的URL,文件或字符串找到對應(yīng)標(biāo)簽并進行解析,另一方面能夠通過不同選擇器來抓取所需數(shù)據(jù),其功能的強大在于,只需在瀏覽器中查找源代碼,找到所需內(nèi)容對應(yīng)的標(biāo)簽,便能夠?qū)θ我飧袷降奈谋緢D片進行解析。

2.4 WebMagic框架介紹

WebMagic框架包括核心和擴展兩部分,將其代碼模塊化是WebMagic框架的主要目標(biāo)。其中,核心部分(WebMagic-Core)實現(xiàn)了代碼的模塊化,擴展部分(WebMagic-Extension)則提供了注解模式、內(nèi)置常用組件等一系列功能,更便于網(wǎng)頁爬蟲實現(xiàn)。

WebMagic包含了 Downloader、PageProcessor、Scheduler、Pipeline 四大組件[6],由Spider把這四大組件組織起來,使其可以互相交互,流程化地執(zhí)行相關(guān)操作。其中,Downloader表示爬蟲生命周期中的下載、PageProcessor表示爬蟲生命周期中的處理、Scheduler表示爬蟲生命周期中的管理和Pipeline表示爬蟲生命周期的持久化功能,而Spider是一個大的容器,也是WebMagic邏輯的核心。

2.5 線程池技術(shù)介紹

線程池技術(shù)廣泛應(yīng)用于解決線程消耗資源問題,在執(zhí)行具體任務(wù)的過程中將其添加到線程池中,相當(dāng)于對所有任務(wù)進行統(tǒng)一管理,當(dāng)線程創(chuàng)建完成之后,線程池中的任務(wù)會自動啟動。多個線程能夠同時抓取數(shù)據(jù),可以實現(xiàn)程序多任務(wù)執(zhí)行。隨著多核處理器在現(xiàn)代計算機設(shè)備中的流行,在軟件中使用多線程程序的頻率也隨之增加,多線程技術(shù)可有效提高程序運行效率,但是多線程的模式需要不停地建立與摧毀線程,雖然同生成進程相比,創(chuàng)建線程的時間已經(jīng)很短了,當(dāng)這個操作被大量執(zhí)行,依然會造成很多時間資源的浪費[7]。而線程池主要目標(biāo)就是對線程資源進行統(tǒng)一管理,線程池的優(yōu)點是節(jié)約了線程的創(chuàng)建和銷毀所占用的時間[8]。

3 智能圖片爬蟲系統(tǒng)介紹

3.1 智能圖片爬蟲系統(tǒng)功能架構(gòu)

傳統(tǒng)的爬蟲系統(tǒng)使用WebMagic框架,其主要功能模塊為網(wǎng)頁獲取模塊,該模塊主要獲取得到具體網(wǎng)頁;網(wǎng)頁分析模塊,該模塊主要功能為解析具體網(wǎng)頁內(nèi)容;數(shù)據(jù)存儲模塊,該模塊將爬取得到的數(shù)據(jù)進行存儲。其中,傳統(tǒng)爬蟲系統(tǒng)中的網(wǎng)頁獲取與網(wǎng)頁分析可以為一個模塊組,且該模塊組為實現(xiàn)功能主要模塊,該模塊組內(nèi)含網(wǎng)頁獲取、網(wǎng)頁分析、URL管理三大模塊。如圖1所示。

圖1中架構(gòu)顯示,用戶提交http請求,在得到響應(yīng)后,從Internet上獲得網(wǎng)頁上的 URL,這一過程中,獲取得到的可能是HTML、JSON或者其他文本格式的內(nèi)容。接著進行使用JSoup對page解析,并且不斷地從當(dāng)前頁面上抽取新的URL放入到URL管理模塊中,其中,網(wǎng)頁分析模塊會對當(dāng)前網(wǎng)頁的URL進行保存,而Request就是對URL地址的一層封裝,發(fā)出一個Request請求也就對應(yīng)一個URL地址。通過網(wǎng)頁分析后得到的Resultltems相當(dāng)于一個集合,爬取得到的數(shù)據(jù)放在Resultltems中,最后對其進行數(shù)據(jù)存儲。本文在傳統(tǒng)爬蟲系統(tǒng)的基礎(chǔ)上增加了一個篩選圖片功能模塊,如圖2所示。

智能圖片爬蟲系統(tǒng)的功能模塊包括網(wǎng)頁獲取與分析模塊,該模塊組內(nèi)含網(wǎng)頁獲取、網(wǎng)頁分析、URL管理、圖片篩選以及數(shù)據(jù)存儲五大模塊。

3.2 智能圖片爬蟲系統(tǒng)功能模塊介紹

1) 網(wǎng)頁獲取。傳統(tǒng)網(wǎng)絡(luò)爬蟲的基本原理是,HttpClient創(chuàng)建對象相當(dāng)于創(chuàng)建瀏覽器,傳統(tǒng)爬蟲系統(tǒng)通過http請求,發(fā)送給指定頁面,得到響應(yīng)后,便可對網(wǎng)頁進行分析,并完成相應(yīng)的數(shù)據(jù)爬取。

2) 網(wǎng)頁分析。網(wǎng)頁分析模塊將存儲在HTML框架中的文本一一解析,從具體標(biāo)簽中爬取有效信息,常用的方法包括通過字符串處理工具和使用正則表達式提取文本數(shù)據(jù)。但是這些方法都會帶來很大的開發(fā)成本,所以本文使用一款專門解析HTML頁面的技術(shù)JSoup實現(xiàn)網(wǎng)頁內(nèi)容提取。

3) URL管理。在數(shù)據(jù)進行解析的過程中,會出現(xiàn)兩種情況,一種是在當(dāng)前頁面已經(jīng)拿到所需數(shù)據(jù),則可直接進行圖片篩選,反之,需再次請求新的URL,本模塊將抽取得到的URL進行統(tǒng)一管理,保存完成后可直接進行解析。

4) 圖片篩選。圖片篩選模塊的基本流程如圖3所示:

圖片篩選模塊對兩張圖片進行像素比對,在獲取得到圖片的像素個數(shù)大小后,使用循環(huán)的方式,對兩張圖片的像素進行一一對比,在循環(huán)過程中,一旦比較確認(rèn)兩個像素點不同,則退出循環(huán),計算相似度。

5) 數(shù)據(jù)存儲。爬蟲得到數(shù)據(jù)集后需存儲數(shù)據(jù),一種方式可以將數(shù)據(jù)集存儲到本地文件,另一種方式將數(shù)據(jù)集保存到數(shù)據(jù)庫。爬取少量數(shù)據(jù)則可選擇保存到本地文件這一方式,大量數(shù)據(jù)一般選擇保存到數(shù)據(jù)庫。數(shù)據(jù)庫可以選擇使用MySQL數(shù)據(jù)庫,這是一個開源的數(shù)據(jù)庫。MYSQL數(shù)據(jù)庫體積小、靈活性強、速度快,這保證了爬蟲的效率。

3.3 智能圖片爬蟲系統(tǒng)實現(xiàn)

智能圖片爬蟲系統(tǒng)具體實現(xiàn)是創(chuàng)建HttpClient對象,對目標(biāo)網(wǎng)頁發(fā)出請求,得到響應(yīng)后則開始解析網(wǎng)頁內(nèi)容,解析過程中會將URL進行統(tǒng)一管理,抽取到URL管理模塊,當(dāng)前響應(yīng)內(nèi)容存在所需圖片時,便可抓取圖片對圖片進行篩選,篩選完成后存入數(shù)據(jù)庫中,當(dāng)前響應(yīng)內(nèi)容不存在所需圖片時,可通過URL管理模塊抓取得到所需圖片。具體實現(xiàn)如下所示:

1) 網(wǎng)頁獲取模塊實現(xiàn)

傳統(tǒng)的網(wǎng)絡(luò)爬蟲使用HttpClient創(chuàng)建對象,通過設(shè)置URL直接獲取訪問地址并解析,核心代碼如下:

//使用Httpclient發(fā)起請求,獲取響應(yīng)

CloseableHttpResponse response = httpClient.execute(httpPost);

//解析響應(yīng)

if (response.getStatusLine().getstatusCode() == 200){

string content = EntityUtils.toString(response.getEntity(),"utf8");

}

HttpClient每次創(chuàng)建對象相當(dāng)于創(chuàng)建一個瀏覽器,同樣銷毀對象相當(dāng)于關(guān)閉瀏覽器,可以看出每次請求都要創(chuàng)建 HttpClient,會有頻繁創(chuàng)建和銷毀的問題,因此本文使用連接池來避免出現(xiàn)頻繁創(chuàng)建和銷毀問題,核心代碼如下:

//創(chuàng)建連接池管理器

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();

//使用連接池管理器發(fā)起請求

doGet(cm);

//從連接池中獲取Httpclient對象

CloseableHttpClient httpClient = HttpClients.custom() . setConnectionManager(cm).build();

2) 網(wǎng)頁分析模塊實現(xiàn)

獲取到訪問地址之后并不是我們真正需要的數(shù)據(jù)集,還需對其進行解析,核心代碼如下:

//解析HTML標(biāo)簽

Document doc = Jsoup.parse(new File(“訪問路徑”),“utf-8”);

//獲取所有圖片

Elements element = doc.body().getElementsByClass("具體元素").select("li");

3) URL管理實現(xiàn)

URL管理模塊保存的是頁面中抓取到的超鏈接地址,網(wǎng)頁分析模塊會自動請求該頁面并分析獲取信息。本智能圖片爬取系統(tǒng)以爬取“圖片之家”為例,按照實際頁面結(jié)構(gòu)獲取URL。核心代碼實現(xiàn)如下:

//獲取圖片鏈接

page.addTargetRequests(page.getHtml().css(“具體標(biāo)簽”).link().all());

4) 篩選圖片模塊實現(xiàn)

使用注解單一屬性定義兩張圖片,預(yù)先分析得到的圖片定義為預(yù)期圖片,后分析得到的圖片定義為實際圖片,之后對這兩張圖片進行對比,核心代碼如下:

//像素比較

if(imageInput == imageoutput){

for (int j = 0;j

if (imagefileInput.getElem(j) != imagefileOutPut.getElem(j)) {

imageG++;

}}

}else {

flagF=(imageInput+imageoutput)/2;

}

//計算相似度

double similarity=1-(double)( imageG *2)/( imageInput+imageoutput);

5) 數(shù)據(jù)存儲實現(xiàn)

目前已經(jīng)實現(xiàn)將篩選得到的圖片保存在內(nèi)存,還需將圖片保存到數(shù)據(jù)庫中。在WebMagic框架中用于抽取結(jié)果進行保存會使用pipeline 做一個輸出,但其沒有保存到數(shù)據(jù)庫的輸出,而考慮到這一問題后,設(shè)計了pipeline 的接口,接口中只有一個方法,只需要實現(xiàn)這個方法就能實現(xiàn)數(shù)據(jù)庫存儲,核心代碼如下:

//圖片到數(shù)據(jù)庫中

this.jobJnfoService.save(jobInfo);

4 結(jié)束語

本文基于Java語言開發(fā),在eclipse IDE 2021.3版本基礎(chǔ)上通過實現(xiàn)Java多線程智能圖片爬蟲程序,可以表明通過增加篩選圖片模塊能夠減少圖片的重復(fù)性,并且能夠提高其有效性。但本文所設(shè)計的系統(tǒng)還需進一步完善,比如在進行圖片篩選時,存在智能圖片爬蟲系統(tǒng)所消耗的時間和占用系統(tǒng)資源較大的問題。此外,目前許多網(wǎng)站都會對網(wǎng)絡(luò)爬蟲做一定的限制,請求訪問網(wǎng)頁的程序當(dāng)線程和進程數(shù)量過多時會被禁止,沒有實現(xiàn)代理機制,所以智能圖片爬取系統(tǒng)效率的提升在實際環(huán)境中還有較大優(yōu)化空間。

參考文獻:

[1] Yu L X,Li Y L,Zeng Q T,et al.Summary of web crawler technology research[J].Journal of Physics:Conference Series,2020,1449(1):012036.

[2] Pavai G,Geetha T V.Improving the freshness of the search engines by a probabilistic approach based incremental crawler[J].Information Systems Frontiers,2017,19(5):1013-1028.

[3] Deka G C.NoSQL web crawler application[J]. Advances in Computers, 2018,109:77-100.

[4] 李尚林,陳宮,雷勇.基于Java的網(wǎng)絡(luò)爬蟲系統(tǒng)研究與設(shè)計[J].新型工業(yè)化,2021,11(4):74-77,80.

[5] 熊艷秋,嚴(yán)碧波.基于jsoup爬取圖書網(wǎng)頁信息的網(wǎng)絡(luò)爬蟲技術(shù)[J].電腦與信息技術(shù),2019,27(4):61-63.

[6] 孫德華.基于RPA的財務(wù)工作輔助系統(tǒng)的設(shè)計與實現(xiàn)[D].南京:南京郵電大學(xué),2021.

[7] 趙靜文,付巖,吳艷霞,等.多線程數(shù)據(jù)競爭檢測技術(shù)研究綜述[J].計算機科學(xué),2022,49(6):89-98.

[8] 王林.基于Linux的高并發(fā)網(wǎng)絡(luò)聊天系統(tǒng)設(shè)計[J].智能計算機與應(yīng)用,2020,10(7):176-179.

【通聯(lián)編輯:謝媛媛】

主站蜘蛛池模板: 亚洲欧洲日韩综合色天使| 亚洲av无码牛牛影视在线二区| 亚洲人成在线精品| 国产无人区一区二区三区| 国产视频自拍一区| 18禁影院亚洲专区| 亚洲一区二区三区在线视频| 亚洲另类色| 影音先锋亚洲无码| 国产二级毛片| 亚洲久悠悠色悠在线播放| 国产18在线| 久久国产精品娇妻素人| 97se亚洲综合不卡| 国产欧美日韩资源在线观看| 久久精品日日躁夜夜躁欧美| 91九色国产在线| 91系列在线观看| a级免费视频| 18黑白丝水手服自慰喷水网站| 国产视频一区二区在线观看| 91麻豆精品国产91久久久久| 99久久性生片| 黄色在线不卡| 国产精品蜜臀| 亚洲综合极品香蕉久久网| 国产精品久久久免费视频| 999国内精品久久免费视频| 成人一级免费视频| 三级毛片在线播放| 国产激情无码一区二区免费| 国产自视频| 久久精品这里只有国产中文精品| 91久久偷偷做嫩草影院| 国产精品制服| 免费国产一级 片内射老| 伊人久久大线影院首页| 免费av一区二区三区在线| 日韩免费毛片| 国产精品伦视频观看免费| av在线5g无码天天| 久久香蕉国产线看精品| 亚洲五月激情网| 国产新AV天堂| 国产精品毛片一区| 人妻精品全国免费视频| 日本高清成本人视频一区| 91福利一区二区三区| 四虎在线观看视频高清无码| 久久这里只有精品免费| 亚洲精品自在线拍| 欧美日本视频在线观看| 久久青草热| 久久久久国产一级毛片高清板| 九九免费观看全部免费视频| 国产精欧美一区二区三区| 国产精品自在拍首页视频8| 成人久久精品一区二区三区| 91尤物国产尤物福利在线| 91久久偷偷做嫩草影院| 中国特黄美女一级视频| 91久久偷偷做嫩草影院| 一区二区理伦视频| 国产精品欧美亚洲韩国日本不卡| 国产成人综合日韩精品无码不卡| 亚洲欧美不卡| 国产精品大尺度尺度视频| 国产在线观看第二页| 欧美在线中文字幕| 日本高清免费不卡视频| 精品五夜婷香蕉国产线看观看| 少妇精品在线| 一本视频精品中文字幕| 国产成人一区免费观看| 欧美精品在线视频观看| 97青青青国产在线播放| 青青草91视频| 奇米影视狠狠精品7777| 欧美日韩一区二区在线免费观看| 黄色网在线免费观看| 欧美日韩一区二区在线免费观看 | 99在线视频免费观看|