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

基于Java多線程的智能圖片爬蟲系統的研究與實現

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

黃子純 蔡敏

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

關鍵詞:網絡爬蟲;多線程;HttpClient;JSoup;WebMagic

中圖分類號:TP18? ? ? 文獻標識碼:A

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

1 引言

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

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

2 爬蟲相關技術

2.1 爬蟲技術介紹

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

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

高質量——爬蟲技術獲取得到的頁面普遍質量較高[1]。

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

可擴展性——爬蟲程序的可擴展性能夠適應不同數據格式以及不同協議[3]。

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

2.2 HttpClient技術介紹

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

2.3 JSoup技術介紹

JSoup是一款功能較大的第三方開源HTML解析器,能夠通過對網頁中的文本標簽的屬性,針對不同格式的文本內容進行解析。通過JSoup提供的一套API,能夠非常方便地對所需數據進行解析和操作[5]。JSoup一方面在瀏覽器中找到相應源碼后,能夠針對HTML中的URL,文件或字符串找到對應標簽并進行解析,另一方面能夠通過不同選擇器來抓取所需數據,其功能的強大在于,只需在瀏覽器中查找源代碼,找到所需內容對應的標簽,便能夠對任意格式的文本圖片進行解析。

2.4 WebMagic框架介紹

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

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

2.5 線程池技術介紹

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

3 智能圖片爬蟲系統介紹

3.1 智能圖片爬蟲系統功能架構

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

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

智能圖片爬蟲系統的功能模塊包括網頁獲取與分析模塊,該模塊組內含網頁獲取、網頁分析、URL管理、圖片篩選以及數據存儲五大模塊。

3.2 智能圖片爬蟲系統功能模塊介紹

1) 網頁獲取。傳統網絡爬蟲的基本原理是,HttpClient創建對象相當于創建瀏覽器,傳統爬蟲系統通過http請求,發送給指定頁面,得到響應后,便可對網頁進行分析,并完成相應的數據爬取。

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

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

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

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

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

3.3 智能圖片爬蟲系統實現

智能圖片爬蟲系統具體實現是創建HttpClient對象,對目標網頁發出請求,得到響應后則開始解析網頁內容,解析過程中會將URL進行統一管理,抽取到URL管理模塊,當前響應內容存在所需圖片時,便可抓取圖片對圖片進行篩選,篩選完成后存入數據庫中,當前響應內容不存在所需圖片時,可通過URL管理模塊抓取得到所需圖片。具體實現如下所示:

1) 網頁獲取模塊實現

傳統的網絡爬蟲使用HttpClient創建對象,通過設置URL直接獲取訪問地址并解析,核心代碼如下:

//使用Httpclient發起請求,獲取響應

CloseableHttpResponse response = httpClient.execute(httpPost);

//解析響應

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

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

}

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

//創建連接池管理器

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();

//使用連接池管理器發起請求

doGet(cm);

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

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

2) 網頁分析模塊實現

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

//解析HTML標簽

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

//獲取所有圖片

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

3) URL管理實現

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

//獲取圖片鏈接

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

4) 篩選圖片模塊實現

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

//像素比較

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) 數據存儲實現

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

//圖片到數據庫中

this.jobJnfoService.save(jobInfo);

4 結束語

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

參考文獻:

[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的網絡爬蟲系統研究與設計[J].新型工業化,2021,11(4):74-77,80.

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

[6] 孫德華.基于RPA的財務工作輔助系統的設計與實現[D].南京:南京郵電大學,2021.

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

[8] 王林.基于Linux的高并發網絡聊天系統設計[J].智能計算機與應用,2020,10(7):176-179.

【通聯編輯:謝媛媛】

主站蜘蛛池模板: 色哟哟国产精品| av午夜福利一片免费看| 五月婷婷丁香综合| 国产尤物在线播放| 国产精品人成在线播放| 午夜免费视频网站| 亚洲精品无码人妻无码| 在线观看精品国产入口| 毛片基地视频| a网站在线观看| 色综合综合网| 亚洲人成人伊人成综合网无码| 高清久久精品亚洲日韩Av| 国产精品自在拍首页视频8| 91成人免费观看| 亚洲无码视频一区二区三区| 亚洲国产成人精品无码区性色| 女人18毛片久久| 亚洲丝袜中文字幕| 日本中文字幕久久网站| 亚洲女人在线| a毛片基地免费大全| 日韩不卡免费视频| 亚洲资源在线视频| 婷婷五月在线视频| 日韩国产一区二区三区无码| 国产精品污污在线观看网站| 波多野结衣AV无码久久一区| 久久一日本道色综合久久 | 国产成人亚洲欧美激情| 精品久久蜜桃| 国产成人AV男人的天堂| 亚卅精品无码久久毛片乌克兰| 欧美日本在线一区二区三区 | 日本一区二区三区精品国产| 国产门事件在线| 欧美成人二区| 青青青国产精品国产精品美女| 亚洲床戏一区| 国产精品成人久久| 99无码熟妇丰满人妻啪啪 | 亚洲Aⅴ无码专区在线观看q| 亚洲成人一区在线| 青草国产在线视频| 少妇被粗大的猛烈进出免费视频| 一级黄色网站在线免费看| 国产成人h在线观看网站站| 日韩av无码DVD| 中文字幕一区二区视频| 有专无码视频| 免费国产好深啊好涨好硬视频| 日韩av在线直播| 欧美精品黑人粗大| 国产欧美日韩专区发布| 四虎永久免费地址| 精品剧情v国产在线观看| 亚洲美女一区| 亚洲天堂日韩av电影| 亚洲精品第一在线观看视频| 四虎成人免费毛片| 伊人久久精品无码麻豆精品| 亚洲人成网站18禁动漫无码| 婷婷丁香色| 91麻豆国产在线| 成人福利在线视频免费观看| 亚洲丝袜中文字幕| 99在线视频精品| 视频二区中文无码| 无遮挡一级毛片呦女视频| 日韩一二三区视频精品| 国产欧美日韩视频怡春院| 色悠久久综合| 凹凸国产熟女精品视频| 夜夜高潮夜夜爽国产伦精品| 凹凸国产熟女精品视频| 欧美黄网站免费观看| 中日无码在线观看| 日韩av在线直播| 国产成人综合在线视频| 亚洲第一天堂无码专区| 日韩在线2020专区| 久久久久久国产精品mv|