基于標(biāo)記模板的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
發(fā)布時(shí)間:2021-02-08 15:28
網(wǎng)絡(luò)爬蟲(chóng)的誕生,滿足了人們快速獲取指定網(wǎng)絡(luò)信息的需求。但是傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)需要針對(duì)不同網(wǎng)站定制爬蟲(chóng),而開(kāi)發(fā)爬蟲(chóng)程序具有流程多、成本高、難度大、自動(dòng)化程度低等弊端,同時(shí)開(kāi)發(fā)和維護(hù)網(wǎng)絡(luò)爬蟲(chóng)的效率與網(wǎng)站新增和更變速度的懸殊差距,又增加了開(kāi)發(fā)者的負(fù)擔(dān)。針對(duì)這種矛盾,設(shè)計(jì)了基于標(biāo)記模板的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)。系統(tǒng)能夠根據(jù)攜帶少量網(wǎng)頁(yè)信息的爬蟲(chóng)模板自動(dòng)生成爬蟲(chóng)實(shí)例,完成采集任務(wù)。系統(tǒng)的目標(biāo)是在減輕爬蟲(chóng)開(kāi)發(fā)難度和減少開(kāi)發(fā)流程的基礎(chǔ)上為網(wǎng)絡(luò)輿情系統(tǒng)提供大量實(shí)時(shí)網(wǎng)絡(luò)數(shù)據(jù)。系統(tǒng)以Scrapy框架為基礎(chǔ)進(jìn)行修改和擴(kuò)展以實(shí)現(xiàn)分布式,主要工作包括以下幾點(diǎn):定義爬蟲(chóng)模板,系統(tǒng)能夠根據(jù)模板描述的采集網(wǎng)站、采集元素、爬蟲(chóng)配置等要素,生成爬蟲(chóng)實(shí)例,執(zhí)行采集任務(wù)。設(shè)計(jì)了一個(gè)基于標(biāo)記的半自動(dòng)化頁(yè)面元素抽取算法,算法以頁(yè)面的XPath以及標(biāo)記信息作為特征,采用聚類(lèi)策略計(jì)算生成抽取規(guī)則,實(shí)現(xiàn)自動(dòng)抽取。實(shí)現(xiàn)了一個(gè)二級(jí)去重方案,將經(jīng)壓縮并設(shè)置有過(guò)期時(shí)間的URL緩存到內(nèi)存作為一級(jí)緩存,并以鍵值對(duì)形式將URL持久化到磁盤(pán)形成二級(jí)去重,在保證不發(fā)生內(nèi)存溢出的基礎(chǔ)上實(shí)現(xiàn)增量采集的快速去重,增加了系統(tǒng)的穩(wěn)定性。通過(guò)封裝頁(yè)面渲染引擎和封裝瀏覽器內(nèi)核...
【文章來(lái)源】:華中科技大學(xué)湖北省 211工程院校 985工程院校 教育部直屬院校
【文章頁(yè)數(shù)】:68 頁(yè)
【學(xué)位級(jí)別】:碩士
【部分圖文】:
板塊頁(yè)面鏈接列表DOM結(jié)構(gòu)示意圖
圖 3-5 詳情頁(yè)部分 DOM 結(jié)構(gòu)示意圖研究發(fā)現(xiàn)詳情頁(yè)也具有非常相似的 DOM 模型結(jié)構(gòu)。如圖 3-5 所示,如果去除頁(yè)所有的 a 標(biāo)簽節(jié)點(diǎn),剩下的非鏈接文本節(jié)點(diǎn)都是與詳情頁(yè)內(nèi)容相關(guān)的節(jié)點(diǎn),題、發(fā)布時(shí)間、文章正文等。對(duì)于單個(gè)標(biāo)簽的元素如標(biāo)題、作者可以直接標(biāo)記進(jìn)行定位元素;對(duì)于正文,由于該字段是由多個(gè)標(biāo)簽組合而成,需要先對(duì)其進(jìn)層,然后使用聚類(lèi)策略聚合出包含正文內(nèi)容的節(jié)點(diǎn),再對(duì)節(jié)點(diǎn)生成抽取規(guī)則。
Algroithm :getDetailModel(infos)begindom = buildDom(response) //構(gòu)建一棵dom樹(shù)xpathStructList = buildXPath(dom) //通過(guò)dom樹(shù)構(gòu)造每個(gè)元素的xpathStructxpathList = DeleteByTag('a') //刪除所有的A標(biāo)簽xpathList = DeleteByContent('') //刪除所有沒(méi)有文本內(nèi)容的標(biāo)簽//剩下所有的標(biāo)簽都是非鏈接的文本標(biāo)簽model = {}for item in infos: //遍歷標(biāo)記文本if item not is content:retXpath = matchByText(xpathList,item)//找出每個(gè)標(biāo)記文本的XPATHmodel[item] = retXpath//正文一般由多個(gè)非文本標(biāo)簽組合而成tagStruct = findTagByText(xpathList,infos[content]) //找出正文所在的標(biāo)簽contents = getListByDepth(xpathList,tagStruct.deep)//聚合正文所在的層次contentList = calSim(contents,tagStruct) //對(duì)xpath進(jìn)行聚合得出包含有標(biāo)記正文的類(lèi)contentList = removeOtherField(contentList,model) //刪除可能包含的其他字段retXpath = getXPath(contentList) //對(duì)所有的標(biāo)簽生成其公共XPATHreturn modelend圖 4-2 詳情頁(yè)抽取規(guī)則生成偽代碼板塊頁(yè)面和詳情頁(yè)面的規(guī)則抽取是頁(yè)面分析的重點(diǎn),該分析過(guò)程只進(jìn)行一次,當(dāng)網(wǎng)站結(jié)構(gòu)更變時(shí),系統(tǒng)會(huì)再次調(diào)用模板分析生成規(guī)則。
【參考文獻(xiàn)】:
期刊論文
[1]一種基于Scrapy-Redis的分布式微博數(shù)據(jù)采集方案[J]. 鄧萬(wàn)宇,劉光達(dá),董瑩瑩. 信息技術(shù). 2018(11)
[2]一種深層網(wǎng)的數(shù)據(jù)采集方法[J]. 陳新,都云程,肖詩(shī)斌. 北京信息科技大學(xué)學(xué)報(bào)(自然科學(xué)版). 2018(05)
[3]N-gram模型綜述[J]. 尹陳,吳敏. 計(jì)算機(jī)系統(tǒng)應(yīng)用. 2018(10)
[4]基于Scrapy的農(nóng)業(yè)網(wǎng)絡(luò)數(shù)據(jù)爬取[J]. 李喬宇,尚明華,王富軍,劉淑云. 山東農(nóng)業(yè)科學(xué). 2018(01)
[5]分布式網(wǎng)絡(luò)爬蟲(chóng)框架Crawlzilla[J]. 徐海嘯,董颯,李翔,于洪梅,吳旗. 電子技術(shù)與軟件工程. 2017(18)
[6]爬蟲(chóng)技術(shù)綜述[J]. 馮俐. 電腦知識(shí)與技術(shù). 2017(27)
[7]基于Scrapy的深層網(wǎng)絡(luò)爬蟲(chóng)研究[J]. 劉宇,鄭成煥. 軟件. 2017(07)
[8]基于Nutch的Web論壇分塊采集系統(tǒng)[J]. 程杜新,傅魁. 圖書(shū)館學(xué)研究. 2017(07)
[9]信息爬取工具M(jìn)etaSeeker的介紹及其在微博中的應(yīng)用[J]. 劉丹,葉子青,周舒,唐瑤,粟妮,張璐妮. 計(jì)算機(jī)與網(wǎng)絡(luò). 2015(10)
[10]Bloom Filter及其在網(wǎng)絡(luò)中的應(yīng)用綜述[J]. 劉元珍. 計(jì)算機(jī)應(yīng)用與軟件. 2013(09)
碩士論文
[1]基于Scrapy的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 樊宇豪.電子科技大學(xué) 2018
本文編號(hào):3024137
【文章來(lái)源】:華中科技大學(xué)湖北省 211工程院校 985工程院校 教育部直屬院校
【文章頁(yè)數(shù)】:68 頁(yè)
【學(xué)位級(jí)別】:碩士
【部分圖文】:
板塊頁(yè)面鏈接列表DOM結(jié)構(gòu)示意圖
圖 3-5 詳情頁(yè)部分 DOM 結(jié)構(gòu)示意圖研究發(fā)現(xiàn)詳情頁(yè)也具有非常相似的 DOM 模型結(jié)構(gòu)。如圖 3-5 所示,如果去除頁(yè)所有的 a 標(biāo)簽節(jié)點(diǎn),剩下的非鏈接文本節(jié)點(diǎn)都是與詳情頁(yè)內(nèi)容相關(guān)的節(jié)點(diǎn),題、發(fā)布時(shí)間、文章正文等。對(duì)于單個(gè)標(biāo)簽的元素如標(biāo)題、作者可以直接標(biāo)記進(jìn)行定位元素;對(duì)于正文,由于該字段是由多個(gè)標(biāo)簽組合而成,需要先對(duì)其進(jìn)層,然后使用聚類(lèi)策略聚合出包含正文內(nèi)容的節(jié)點(diǎn),再對(duì)節(jié)點(diǎn)生成抽取規(guī)則。
Algroithm :getDetailModel(infos)begindom = buildDom(response) //構(gòu)建一棵dom樹(shù)xpathStructList = buildXPath(dom) //通過(guò)dom樹(shù)構(gòu)造每個(gè)元素的xpathStructxpathList = DeleteByTag('a') //刪除所有的A標(biāo)簽xpathList = DeleteByContent('') //刪除所有沒(méi)有文本內(nèi)容的標(biāo)簽//剩下所有的標(biāo)簽都是非鏈接的文本標(biāo)簽model = {}for item in infos: //遍歷標(biāo)記文本if item not is content:retXpath = matchByText(xpathList,item)//找出每個(gè)標(biāo)記文本的XPATHmodel[item] = retXpath//正文一般由多個(gè)非文本標(biāo)簽組合而成tagStruct = findTagByText(xpathList,infos[content]) //找出正文所在的標(biāo)簽contents = getListByDepth(xpathList,tagStruct.deep)//聚合正文所在的層次contentList = calSim(contents,tagStruct) //對(duì)xpath進(jìn)行聚合得出包含有標(biāo)記正文的類(lèi)contentList = removeOtherField(contentList,model) //刪除可能包含的其他字段retXpath = getXPath(contentList) //對(duì)所有的標(biāo)簽生成其公共XPATHreturn modelend圖 4-2 詳情頁(yè)抽取規(guī)則生成偽代碼板塊頁(yè)面和詳情頁(yè)面的規(guī)則抽取是頁(yè)面分析的重點(diǎn),該分析過(guò)程只進(jìn)行一次,當(dāng)網(wǎng)站結(jié)構(gòu)更變時(shí),系統(tǒng)會(huì)再次調(diào)用模板分析生成規(guī)則。
【參考文獻(xiàn)】:
期刊論文
[1]一種基于Scrapy-Redis的分布式微博數(shù)據(jù)采集方案[J]. 鄧萬(wàn)宇,劉光達(dá),董瑩瑩. 信息技術(shù). 2018(11)
[2]一種深層網(wǎng)的數(shù)據(jù)采集方法[J]. 陳新,都云程,肖詩(shī)斌. 北京信息科技大學(xué)學(xué)報(bào)(自然科學(xué)版). 2018(05)
[3]N-gram模型綜述[J]. 尹陳,吳敏. 計(jì)算機(jī)系統(tǒng)應(yīng)用. 2018(10)
[4]基于Scrapy的農(nóng)業(yè)網(wǎng)絡(luò)數(shù)據(jù)爬取[J]. 李喬宇,尚明華,王富軍,劉淑云. 山東農(nóng)業(yè)科學(xué). 2018(01)
[5]分布式網(wǎng)絡(luò)爬蟲(chóng)框架Crawlzilla[J]. 徐海嘯,董颯,李翔,于洪梅,吳旗. 電子技術(shù)與軟件工程. 2017(18)
[6]爬蟲(chóng)技術(shù)綜述[J]. 馮俐. 電腦知識(shí)與技術(shù). 2017(27)
[7]基于Scrapy的深層網(wǎng)絡(luò)爬蟲(chóng)研究[J]. 劉宇,鄭成煥. 軟件. 2017(07)
[8]基于Nutch的Web論壇分塊采集系統(tǒng)[J]. 程杜新,傅魁. 圖書(shū)館學(xué)研究. 2017(07)
[9]信息爬取工具M(jìn)etaSeeker的介紹及其在微博中的應(yīng)用[J]. 劉丹,葉子青,周舒,唐瑤,粟妮,張璐妮. 計(jì)算機(jī)與網(wǎng)絡(luò). 2015(10)
[10]Bloom Filter及其在網(wǎng)絡(luò)中的應(yīng)用綜述[J]. 劉元珍. 計(jì)算機(jī)應(yīng)用與軟件. 2013(09)
碩士論文
[1]基于Scrapy的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 樊宇豪.電子科技大學(xué) 2018
本文編號(hào):3024137
本文鏈接:http://sikaile.net/kejilunwen/shengwushengchang/3024137.html
最近更新
教材專(zhuān)著