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

基于Java的低代碼主題爬蟲的設計與實現

2022-05-30 06:15:51張夢元劉莉
電腦知識與技術 2022年30期
關鍵詞:大數據

張夢元 劉莉

摘要:網頁數據提取是人工智能與大數據相關課題學習與研究的一項重要內容。為了減輕編寫主題網絡爬蟲程序工作,該文在主題爬蟲的基礎原理上,設計一套通用的Java爬蟲程序。程序抽象了下載模塊、內容處理模塊和結果操作等核心內容,通過注解或xml配置等低代碼方式,即可實現不同主題內容爬取工作。

關鍵詞:大數據;Java;主題爬蟲;低代碼

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

文章編號:1009-3044(2022)30-0033-03

開放科學(資源服務)標識碼(OSID):

1 引言

大數據與人工智能是國家高度重視的熱門研究領域[1]。中國開展教學研究的高校多,從事相關科研工作和學習的人員基數大。在從事這些工作和學習中,收集相關的領域數據是必要的環節。目前市面上有一些開源的數據可供學習使用,但大部分研究領域數據被相關行業少數公司掌握,并不對外開放,給相關研究學習造成了極大的困難。而通過人工的方式從網頁提取數據費時費力,極大影響研究和學習動力。因此在不進行商業盈利和違背法律與爬蟲規則的前提下,開發一些數據爬取工具成為當前數據采集的一個主要途徑[2]。然而,這類的開發工作有一定的領域門檻,而且開發程序大多都是一次性的,對于其他主題的研究無法重復利用。因此,設計一套低代碼的主題爬蟲工具,以期沒有爬蟲領域知識的需求者也能完成相關主題內容數據的抓取。

2 爬蟲的概率和原理

2.1 網絡爬蟲的概念

網絡爬蟲也叫蜘蛛程序。因為互聯網和蜘蛛網一樣,縱橫交錯。數據存儲在各個網絡節點的主機上。網絡爬蟲就如同蜘蛛一樣,在各個主機節點游走,獲取需要的數據信息。目前將其分為四類,分別是通用網絡爬蟲,聚焦網絡爬蟲,增量式網絡爬蟲,深層網絡爬蟲[3]。本文研究的主題爬蟲屬于聚焦爬蟲這一類,主要是爬取一些預定的網頁數據。由于只訪問一些特定的網頁,對網絡資源的影響較小。

2.2 主題爬蟲的主要原理

主題網絡爬蟲是利用程序代替瀏覽器向服務器發送一些特定的地址請求,從而獲取到目標數據。其主要流程是首先下載用戶提供起始頁面,獲取頁面數據和處理相關信息,然后將網頁內鏈接進行主題相關度計算,最后根據搜索策略進行下一次鏈接請求與數據獲取[4-5]。其主要流程如圖1所示。

2.3 低代碼開發概念

低代碼(low code)的核心理念是用少量代碼,或者不寫代碼來進行系統開發。由此帶來的優勢有:降低開發門檻;減少開發成本;快速實現業務功能;系統功能更穩定,維護性更好。低代碼開發分為傳統的軟件開發、輕量級無代碼、企業級低代碼等開發形態[6],其開發模式的場景適應性從左到右依次增強。

輕量級無代碼開發模式以表單驅動,主要是通過預先設定程序規則,由應用開發人員或者業務人員通過圖形化界面配置規則或者直接編輯配置規則方式來實現具體業務。

3 爬蟲的設計與實現

3.1 爬蟲設計

根據爬蟲業務需求,給網絡爬蟲設計下面幾個模塊:下載器(Download)模塊,內容解析器(ContentsResolver)模塊,控制器(SpiderController)模塊,結果處理器(Dao)模塊,整體架構如圖2所示。

1)SpiderApplication

SpiderApplication是爬蟲程序應用上下文的引導類,通過運行它的run方法啟動爬蟲應用。其主要流程為加載下載器、內容解析器等實體對象;實例化爬蟲控制器,初始化下載監聽器、內容處理監聽器、結果處理監聽器;初始化下載隊列,啟動下載線程;初始化內容解析隊列,啟動內容解析線程;初始化結果處理隊列,啟動結果處理線程。

2)Downloader

數據下載模塊根據傳遞地址信息拉取網絡數據并轉換成page對象,并將page對象添加到待處理數據隊列。下載器是爬蟲的通用模塊,后續實現其他主題爬蟲可以重復利用。處理主要問題構建爬蟲與服務間的會話,如登錄問題等;確保數據可靠下載,如下載恢復與重試;正確處理文件編碼,并正確解析為html文檔對象。該模塊程序提供完整實現,大多數情況可直接使用,特定要求也支持重載式擴展。其主要流程為首先獲取站點配置信息,包括請求頭、useragent、用戶名、密碼,接著建立與站點會話,如需登錄則根據配置信息登錄,然后下載請求數據,如下載失敗重新添加請求隊列,并記錄重試次數,超過重試次數則丟棄,最后解析數據編碼,根據編碼轉換成html文檔保存到page對象。

3)ContentsResolver

內容解析器完成對數據的分析處理。調度器在處理數據隊列數據過程中會根據page數據或對應的地址信息請求獲取具體解析器對象,由具體解析器實際處理數據對象。程序定義兩種類型的通用解析對象抽象,第一種是鏈接解析器,即識別并返回后續需處理地址信息,并交由控制器將地址添加到請求隊列。第二種是目標數據解析器,提取page中關鍵信息,后續交由結果處理模塊進行相應處理。處理器需在程序初始化過程中注冊到應用上下文,程序實現IOC注冊框架,實現注冊過程可配置化;程序實現解析器可配置式或注解式編寫功能,實現低代碼式爬蟲程序定制。主要流程為用戶編寫或配置內容處理器,程序啟動,獲取配置信息,初始化到應用上下文,然后程序調度數據處理隊列過程中,根據page信息獲取對應處理器,處理器解析數據,返回對應信息,最后控制器根據放回數據類型交由對應模塊處理。

4)SpiderController

任務控制器模塊實現爬蟲地址處理邏輯,下載數據(page)處理邏輯與結果(bean)處理邏輯。通過實現下載回調接口,數據處理回調接口,結果處理回調接口并向下載線程、數據處理線程、結果處理線程添加監聽器事件實現信息處理邏輯。記錄處理過程中的關鍵日志。其中下載調度需實現對下載鏈接信息的去重與持久化工作,持久化的目的是應用程序結束后重啟能夠恢復前期下載狀態。

5)Dao

數據處理模塊主要是用來處理提取后的數據,一般用來保存數據,如保存文件和數據庫,同時支持對數據進行進一步統計或過濾等功能擴展需求。程序實現數據庫與文件配置支持。

3.2 功能實現

3.2.1 下載器模塊的實現

Java有許多成熟網絡請求框架,程序基于httpclient框架實現。下載器抽象接口定義如下:

public interface Downloader {

public Page download ( String url );

}

可通過接口擴展實現不同下載器,通過SpiderApplication的setDownloader進行配置,同時支持xml配置文件。

下載器在頁面下載結束后將其轉換成Document文檔對象。頁面解析采用Jsoup框架,該框架支持DOM,CSS方式對頁面進行數據提取,后續用戶根據需求可簡單通過低代碼方式擴展相應的內容處理器,實現不同主題爬蟲任務。下載器主要代碼如下:

@com.spider.anotation.Downloader//注解下載器

public class HttpClientDownloader implements Downloader{

@Override

public Page download ( String url ) {

//1、初始化httpClient對象

HttpClient httpClient =? getHttpClient();

//2、構建鏈接,發送訪問請求

httpResponse = httpClient.execute ( getHttpUriRequest(),getHttpClientContext());

//3、獲取與解析放回數據

//4、解析數據,生成page對象

page = handleResponse ( request ,? getCharset() , httpResponse);

//5、回調控制器結果處理邏輯

onSuccess ( request );

return null;

}

}

3.2.2 內容處理器的實現

內容處理器是實現不同主題爬蟲的關鍵,程序對其抽象如下:

public interface ContentResolver {

public List doResolve ( Page page );

}

接口返回泛型T,如果處理鏈接解析器,則返回鏈接字符串。如果處理內容,則可以是用戶定義的數據實體類。

該設計目的是實現具體爬蟲任務,可以方便進行擴展。同時為了降低編寫門檻,程序提供了基于注解或者xml的低代碼配置方式。爬蟲控制器依據page的url信息,查找對應的內容處理器Resolver。Resolver在應用程序啟動時,由SpiderApplication初始化。通過Resolver注解被程序識別,通過type字段設置處理器類型,默認類型為鏈接處理器。被標識為處理器類需指定SourceUrl注解,控制器將根據value字段來匹配對應內容處理器,value支持正則表達式匹配方式進行模糊匹配。數據解析器需定義返回數據實體方法,數據實體字段通過Select注解標識,Select為抽取規則的封裝,基于Jsoup框架實現文檔解析,實現Css、Xpath數據提取,同時支持Java正則表達式。Select通過type指定解析類型,通過value設定解析參數。

3.2.3 控制器實現主要邏輯

public class SpiderController implements DownloadListener , ResolveListener {

@Override

public void onDownloadSuccess(String path, Page page) {

//1、記錄下載完成信息

//2、獲取并設置內容處理對象

//3、添加內容解析隊列

}

@Override

public void onDownloadFail(String path, Result result) {

// 1、記錄失敗信息

// 2、根據規則丟棄或者重新排隊下載

}

@Override

public void onResolveSuccess(DataInfo bean) {

//1、記錄內容解析完成信息

//2、添加結果處理隊列

}

@Override

public void onResolveFail(Page page, Result result) {

//增加失敗日志

}

}

3.2.4 結果處理程序實現

數據處理抽象接口如下:

public interface Dao {

public void process(Object obj);

}

由該接口派生文件保存,數據庫保存功能。文件保存將內容處理結構對象轉換成json字符串保存指定文件夾中,文件名為時間加鏈接哈希碼。數據庫保存通過ORM方式。程序定義Table,column注解,指定結果對象存儲對應數據庫表與列。主要代碼邏輯如下:

public class OrmDao implements Dao{

@Override

public void process(Object obj) {

Class beanClass = obj.getClass();

if(beanClass.isAnnotationPresent(Table.class)){

//1、通過注解獲取表明,字段名

//2、生成對應的sql語句

//3、通過jdbc保存到數據庫

}

}}

4 爬蟲應用案例

4.1 案例分析與應用

文化傳媒行業有大量應用研究案例,比如票房預測、電影推薦等,這些研究內容都是基于電影平臺數據[7-8]。以獲取豆瓣網《獨行月球》評論信息為例,可基于前文爬蟲框架簡易實現爬蟲程序。

該影片的主頁面為https://movie.douban.com/subject/35183042/,評論信息頁面地址類似如下https://movie. douban.com/subject/35183042/comments?status=P,評論信息分頁顯示,地址不變部分為https://movie.douban.com/subject/35183042/comments。對應實現地址處理代碼如下:

@Resolver ( id = "douban")

@SourceUrl ("https://movie.douban.com/subject/35183042/*")

public class DoubanUrlResolver {

public String getUrlPattern(){

return "https://movie.douban.com/subject/35183042/comments*";

}

}

通過指定該地址處理Resolver,提取包含地址前綴的相關地址。SourceUrl指定處理主題地址前綴,避免抓取其他影片評論。此處非標準正則式,程序對url常見符號進行轉義。

評論具體信息截取片段如下:

好消息是沈騰貢獻了最富層次的一次表演,壞消息是成片的質量到底辜負了他。即便他以一己之力將小品升華成電影,但片中呈現的一切都是二手的,成了一件昂貴而蹩腳的A貨。

評論內容包含在class為comment-item的div標簽內,一個頁面具有多條該類型信息,通過鏈接翻頁。對應內容處理代碼可設計如下:

@Resolver ( id = "doubanBean",type = SpiderApplication.TYPE_CONTENT)

@SourceUrl ( "https://movie.douban.com/subject/35183042/comments*")

public class DoubanBeanResolver {

public DoubanComment getComment(){

return new DoubanComment();

}

}

public class DoubanComment {

@Select ( value = ".comment-item ",? type =? Select.Type.Css)

private List comments;

}

通過type = SpiderApplication.TYPE_CONTENT指定為內容處理器。SourceUrl指定該類型頁面交由該處理器分析。getComment()函數指定數據對象,返回對象定義必須指定Select注解提取方式。由頁面內容可知,通過.comment-item即可找出評論標簽p。由于頁面存在該類型標簽有多個,因此放回類型為列表,如果選擇內容在頁面中唯一,則應為字符串。同時程序也支持XPath與正則表達式的方式,用戶可根據實際情況靈活選擇。

4.2 案例結果展示

對獲取《獨行月球》的影評文本進行分詞,利用WordCloud生成詞云如圖3所示。

5 結束語

以獲取《獨行月球》影評數據獲取為例,用戶通過分析頁面鏈接、頁面內容,獲取數據基本特征。然后用注解的方式表示成對應的ContentResolver,即可實現內容的抓取工作,無須重復編寫具體解析、下載、保存與任務管理等業務邏輯。同時程序支持正則表達式、XPath、Css選擇等方式,基本滿足大部分頁面提取場景。應用表明能極大減少用戶編寫主題爬蟲工作。程序目前并未實現圖形化界面配置的簡化方式,后期考慮增加該功能,以進一步減少開發時間。

參考文獻:

[1] 張玉鵬.中國人工智能發展趨勢現狀及其促進策略[J].科技與創新,2022(15):67-69,72.

[2] 劉業,吳建平.動態可配置網絡爬蟲系統的形式化研究[J].福建電腦,2022,38(8):1-4.

[3] 潘曉英,陳柳,余慧敏,等.主題爬蟲技術研究綜述[J].計算機應用研究,2020,37(4):961-965,972.

[4] 顧勤.網絡爬蟲技術原理及其應用研究[J].信息與電腦(理論版),2021,33(4):174-176.

[5] 劉景發,李帆,丁若堯,等.基于本體和模擬退火算法的暴雨災害主題爬蟲策略[J].Frontiers of Information Technology & Electronic Engineering,2022,23(8):1189-1205.

[6] 定義軟件開發新模式 中國企業級無代碼開發白皮書2021年[C]//艾瑞咨詢系列研究報告(2021年第8期),2021:439-500.

[7] 王國華.基于python的豆瓣電影網絡爬蟲設計與分析[C]//第三十六屆中國(天津)2022IT、網絡、信息技術、電子、儀器儀表創新學術會議論文集, 2022:212-215.

[8] 王恒,唐孝國,郭俊亮.基于python的電影評分網頁數據爬取[J].黑龍江科學,2022,13(14):48-50,54.

【通聯編輯:謝媛媛】

猜你喜歡
大數據
基于在線教育的大數據研究
中國市場(2016年36期)2016-10-19 04:41:16
“互聯網+”農產品物流業的大數據策略研究
中國市場(2016年36期)2016-10-19 03:31:48
基于大數據的小微電商授信評估研究
中國市場(2016年35期)2016-10-19 01:30:59
大數據時代新聞的新變化探究
商(2016年27期)2016-10-17 06:26:00
淺談大數據在出版業的應用
今傳媒(2016年9期)2016-10-15 23:35:12
“互聯網+”對傳統圖書出版的影響和推動作用
今傳媒(2016年9期)2016-10-15 22:09:11
大數據環境下基于移動客戶端的傳統媒體轉型思路
新聞世界(2016年10期)2016-10-11 20:13:53
基于大數據背景下的智慧城市建設研究
科技視界(2016年20期)2016-09-29 10:53:22
數據+輿情:南方報業創新轉型提高服務能力的探索
中國記者(2016年6期)2016-08-26 12:36:20
主站蜘蛛池模板: 亚洲精品无码AV电影在线播放| 欧美三级视频网站| 国产二级毛片| 免费jjzz在在线播放国产| 欧美一级黄片一区2区| 亚洲精品欧美重口| 亚洲精品不卡午夜精品| 亚洲日韩精品无码专区| 成人午夜免费视频| 不卡无码网| 久久久精品久久久久三级| 亚洲日产2021三区在线| 精品精品国产高清A毛片| 91免费国产在线观看尤物| 欧美激情成人网| 97国产在线播放| 九色视频在线免费观看| 欧美中出一区二区| 欧美色伊人| 免费福利视频网站| 91久草视频| 国产香蕉在线| 国产91久久久久久| 亚洲人成网站观看在线观看| 在线无码私拍| 40岁成熟女人牲交片免费| 狠狠色丁香婷婷| 欧美日韩国产一级| 国产福利免费观看| 69视频国产| 一级毛片中文字幕| 亚洲香蕉久久| 欧美成人精品一级在线观看| 国产人在线成免费视频| 欧美一级在线| 国产精品视频观看裸模| 成年片色大黄全免费网站久久| 3p叠罗汉国产精品久久| 97国产精品视频人人做人人爱| 婷婷亚洲综合五月天在线| 亚洲高清中文字幕| 日本一区二区不卡视频| 国产成人一区在线播放| 欧美日韩激情在线| 老司机午夜精品网站在线观看| 精品午夜国产福利观看| 成人国产一区二区三区| 国产幂在线无码精品| 亚洲综合婷婷激情| 香蕉综合在线视频91| 最新日本中文字幕| 亚洲女同一区二区| 久久久久人妻精品一区三寸蜜桃| 国产日韩精品欧美一区灰| 久久免费视频播放| 亚洲欧美不卡视频| 免费一看一级毛片| 欧美啪啪一区| 国产高清精品在线91| 在线观看精品自拍视频| a欧美在线| 久久精品人人做人人爽97| 亚洲三级影院| 青青青伊人色综合久久| 爱爱影院18禁免费| 精品国产aⅴ一区二区三区| 婷婷亚洲视频| 亚洲精品无码久久毛片波多野吉| 日韩中文字幕免费在线观看| 99偷拍视频精品一区二区| 四虎永久免费在线| 国产色图在线观看| 亚洲天堂日本| 尤物在线观看乱码| 日本在线国产| 亚洲第一视频区| 蜜桃视频一区二区三区| 国产精品嫩草影院av| 在线播放国产一区| 亚洲欧美一区二区三区蜜芽| 欧美精品v| 亚洲va欧美ⅴa国产va影院|