freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文(設(shè)計(jì)):面向web service的網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)與實(shí)現(xiàn)(文件)

 

【正文】 編寫(xiě)代碼時(shí),會(huì)用一些空格來(lái)調(diào)整內(nèi)容 的長(zhǎng)度,根據(jù)內(nèi)容的不同,空格的長(zhǎng)度也不同。 服務(wù)提供商集合頁(yè)面內(nèi)容提取 分析服務(wù)提供商集合頁(yè)面 HTML 代碼后,可以得知所有的服務(wù)提供商頁(yè)面URL 都在一個(gè)屬性 Class = “ providerlist”的 ul 標(biāo)簽中。 try { parser = new Parser(content)。 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 17 NodeList nodelist = null。 } 3. 得到了 class=providerlist的 ul標(biāo)簽后,把這部分內(nèi)容轉(zhuǎn)換為 String,并新建一個(gè) Filter,目的是為了找到 ul標(biāo)簽下所有 a標(biāo)簽。 try { parser = new Parser(content1)。 } catch (ParserException e) { ()。 i ()。 int end = (。p=0。 服務(wù)提供商頁(yè)面內(nèi)容提取 服務(wù)提供商頁(yè)面的提取過(guò)程比較特殊, 因?yàn)?某提供商注冊(cè)的服務(wù)比較多,需要分頁(yè)顯示,所以在抓取服務(wù)詳細(xì)信息頁(yè)面 URL 的同時(shí),也要抓取下一頁(yè)的URL,并把這些 URL 加入到待訪問(wèn)隊(duì)列中。根據(jù)以上分析,提取服務(wù)提供商頁(yè)面內(nèi)容流程圖如 43 所示: 圖 43 服務(wù)提供商頁(yè)面內(nèi)容提取流程圖 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 19 部分的代碼實(shí)現(xiàn)如下: 1. 新建一個(gè)解析類(lèi) Parser 實(shí)例。 } 2. 首先通過(guò)新 建一個(gè) Filter,在頁(yè)面中查找屬性 class=39。 NodeList nodelist = null。 if(() != 0){ Node linode = (0)。 } 4. 接下來(lái)就是提取該頁(yè)面中服務(wù)詳細(xì)信息頁(yè)面的 URL,所以新建一個(gè) Filter,目的是為了得到屬性 class=39。 ()。 if(() == 0) return。 (the wsdl page is: +url)。 content = (baseIndex)。 服務(wù)提供商在這段源代碼( dtProvider:/dtdda href= ./a)中。 beginIndex = (\)。提取服務(wù)注冊(cè)時(shí)間代碼如下: int beginIndex,endIndex,baseIndex。 endIndex = (/abbr)。提取服務(wù)可用率代碼如下: int beginIndex,endIndex,baseIndex。 endIndex = (since)。并編寫(xiě)代碼提取內(nèi)容。具體的過(guò)程如圖 45 所示: 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 23 45 頁(yè)面鏈接提取流程圖 部分代碼如下: 1. 首先新建一個(gè)解析類(lèi) Parser 實(shí)例, Parser parser = null。 NodeFilter attributes_filter = new TagNameFilter(a)。 return。 i++) { LinkTag aNode = (LinkTag) ((i))。然后就是在本地磁盤(pán)上新建一個(gè)文件,最后把流中的內(nèi)容寫(xiě)入文件中。 try { //把返回的 WSDL文檔內(nèi)容寫(xiě)入硬盤(pán)文件中 (fos)。首先介紹爬蟲(chóng)啟動(dòng)過(guò)程: 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 25 jar 文件,彈出命令行窗口,顯示爬蟲(chóng)版本信息。 在 Select Extractors 選項(xiàng)中,依次刪除 ExtractorHTML, ExtractorCSS, ExtractorJS, ExtractorSWF。 執(zhí)行完以上 6 步后,點(diǎn)擊 submit job, 然后 在 console 頁(yè)面,點(diǎn)擊 start 按鈕,爬蟲(chóng)就開(kāi)始運(yùn)行了。 根據(jù)分析結(jié)果,本系統(tǒng)采用的抓取方法包括以下兩種: 第一種,對(duì)于提供了服務(wù)詳細(xì)信息的網(wǎng)站,首先分析得到注冊(cè)網(wǎng)站的服務(wù)分布結(jié)構(gòu),然后,爬蟲(chóng)根據(jù)服務(wù)分布結(jié)構(gòu)依次循環(huán)遍歷網(wǎng)站,在遍歷過(guò)程中,把服務(wù)詳細(xì)信息抓取下來(lái),并存入數(shù)據(jù)庫(kù)。本論文是對(duì)每個(gè)網(wǎng)站制作一 個(gè)抓取流程和提取頁(yè)面內(nèi)容方法。因?yàn)?WSDL 的 URL 絕大部分是以 ?wsdl 結(jié)尾的,那么爬蟲(chóng)程序就可以遍歷所有網(wǎng)站,只抓取 WSDL 的 URL,就不需要根據(jù)網(wǎng)頁(yè)結(jié)構(gòu)來(lái)提取服務(wù)詳細(xì)信息,服務(wù)詳細(xì)信息從 WSDL 文檔中就可以 得到。 如果服務(wù)注冊(cè)網(wǎng)站數(shù)量不斷增加,那么本系統(tǒng)也要不斷擴(kuò)展,并不能實(shí)現(xiàn)全自動(dòng)抓取任務(wù)。 本系統(tǒng)對(duì) Seekda 網(wǎng)站上的服務(wù)進(jìn)行抓取,大概用了 2 天時(shí)間,抓取了 21273個(gè)服務(wù),下載了 17255 個(gè) WSDL 文檔,并把服務(wù)相關(guān)信息存入數(shù)據(jù)庫(kù)。如圖 411所示: 圖 411 數(shù)據(jù)庫(kù)存儲(chǔ)內(nèi)容展示 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 29 第五章 總結(jié)和展望 論文總結(jié) 本系統(tǒng)的目標(biāo)是搜集網(wǎng)絡(luò)上的服務(wù),包括服務(wù) WSDL 文檔、服務(wù)提供商、服務(wù)可用率等信息。 圖 48 設(shè)置 module頁(yè)面 1 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 27 圖 49 設(shè)置 module頁(yè)面 2 6. 點(diǎn)擊 setting 標(biāo)簽,進(jìn)入?yún)?shù)設(shè)置頁(yè)面: 在 useragent: 處,修改為 Mozilla/ (patible。 圖 46 成功登陸后的頁(yè)面 3. 點(diǎn)擊 Jobs 標(biāo)簽,在新頁(yè)面點(diǎn)擊 with defaults,顯示新任務(wù)設(shè)置頁(yè)面。 ()。 //在硬盤(pán)中新建一個(gè)文 件 File tf = new File(())。 addLinkFromString(curi, , url, )。 for (int i = 0。 try { nodelist = (attributes_filter)。 } catch (ParserException e) { return。對(duì)所有的頁(yè)面來(lái)說(shuō),提取所有 a 標(biāo)簽中的 url,并把 url 加入到處理鏈中。 }else{ url = (beginIndex+27, endIndex2)。 content = (baseIndex)。 服務(wù)可用率在這段源代碼( ddimg style=width:29px。 content = (baseIndex)。 url = (beginIndex+2, endIndex)。 baseIndex = (dtProvider:/dt)。 endIndex = (\/)。 } 服務(wù)詳細(xì)信息頁(yè)面內(nèi)容提取 在服務(wù)詳細(xì)信息頁(yè)面中,服務(wù)的詳細(xì)信息是在一個(gè) table 表格中的,例如:在服務(wù) QueryService 詳細(xì)信息頁(yè)面中,服務(wù)的信息在標(biāo)簽 table /table中,提取內(nèi)容的流程如圖 44 所示: 圖 44 服務(wù)詳細(xì)信息頁(yè)面內(nèi)容提取流程圖 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 21 提取服務(wù)信息的部分內(nèi)容的實(shí)現(xiàn)如下: 服務(wù) WSDL URL 在 這 段 源 代 碼 ( input type=hidden name=uri value= 提取 WSDL URL 代碼如下: int beginIndex,endIndex,baseIndex。i()。 } catch (ParserException e) { return。的 li標(biāo)簽, NodeFilter attributes_filter1 = new AndFilter(new TagNameFilter(li) ,new HasAttributeFilter(class,web_service))。 addLinkFromString(curi, , str, )。 } catch (ParserException e) { return。的 li標(biāo)簽。 try { parser = new Parser(content)。next39。 addLinkFromString(curi, , url, )。 if (end != 1) url = (0, end)。 String url = ()。 } a標(biāo)簽集合,這些集合都存儲(chǔ)在 nodelist1中,循環(huán)遍歷集合,得到每個(gè)服務(wù)提供商頁(yè)面的 URL,并把 URL通過(guò) addLinkFromString() 函數(shù)加入到爬蟲(chóng)待訪問(wèn)隊(duì)列中。 } NodeList nodelist1 = null。 ()。 } catch (ParserException e) { ()。 } 2. 為需要尋找的標(biāo)簽設(shè)置 FIlter, 以下代碼就是要找出屬性 class=providerlist的 ul標(biāo)簽。因?yàn)?class = “ providerlist”的 ul 在這個(gè)頁(yè)面中是唯一的,所以使用 HTMLParser 比較簡(jiǎn)單。所以在提取的過(guò)程中,主要利用 HtmlParser 網(wǎng)頁(yè)解析工具對(duì) HTML 代碼進(jìn)行解析,該工具能根據(jù) HTML 代碼中的標(biāo)簽屬性找到標(biāo)簽的全部?jī)?nèi)容。 } 網(wǎng)頁(yè)內(nèi)容提取 經(jīng)過(guò)過(guò)濾鏈后,就進(jìn)入提取鏈,在提取鏈中,需要根據(jù)網(wǎng)頁(yè)類(lèi)型對(duì)網(wǎng)頁(yè)進(jìn)行信息提取。p=)){ //該頁(yè)面時(shí)服務(wù)提供商頁(yè)面 (url+ 進(jìn)入 提供商頁(yè)面 )。 3. 是服務(wù)詳細(xì)信息頁(yè)面, 是相同的部分, 是提供商名, QueryService 是服務(wù)名,根據(jù)這個(gè)規(guī)律,我得出結(jié)論:所有天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 15 以 ....../providers/*結(jié)尾的 URL 就是服務(wù)詳細(xì)信息頁(yè)面。 1. 是一個(gè)服務(wù)提供商集合頁(yè)面 URL,作為爬蟲(chóng)的初始 URL,由人外界輸入的。我 主要用了正則表達(dá)式來(lái)判斷這些頁(yè)面URL。方式 3:爬蟲(chóng)可以得到所有的提供商,也就可以得到所有的服務(wù)。 2. 網(wǎng)站把同一類(lèi)標(biāo)簽的服務(wù),以標(biāo)簽的方式顯示在首頁(yè),用戶(hù)可以根據(jù)標(biāo) 簽來(lái)找服務(wù),但是只是服務(wù)數(shù)量較多的標(biāo)簽會(huì)顯示。 5. 如果鏈接能夠進(jìn)入了寫(xiě)鏈,該鏈接是服務(wù) WSDL 文檔的鏈接,所以先下 載該 WSDL 文檔,并在數(shù)據(jù)庫(kù)中添加一條記錄,并在字段 type 中標(biāo)記為 false,說(shuō)明該服務(wù)是沒(méi)有詳細(xì)信息的。 如果該頁(yè)面是本網(wǎng)站的其他頁(yè)面,提取鏈就對(duì)該頁(yè)面進(jìn)行鏈接抓取, 并把這些鏈接加入到待訪問(wèn)隊(duì)列中,并跳過(guò)寫(xiě)鏈。 2. 爬蟲(chóng)線程管理器 TreadPool 詢(xún)問(wèn) Frontier,檢查待訪問(wèn)隊(duì)列中是否存在鏈 接,如果存在, TreadPool 獲得該鏈接,并分配給 一個(gè)線程。 如果該頁(yè)面是服務(wù)詳細(xì)信息頁(yè)面,提取鏈就對(duì)該頁(yè)面進(jìn)行服務(wù)詳細(xì) 信息進(jìn)行抓取。 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 10 3. 爬蟲(chóng)線程獲得鏈接后,首先經(jīng)過(guò)過(guò)濾鏈的處理,判斷鏈接頁(yè)面的類(lèi)型, 并決定如何解析該頁(yè)面。 ? 是負(fù)責(zé)管理爬蟲(chóng)線程的程序文件包,線程獲取鏈接,并訪問(wèn)網(wǎng)頁(yè)的。 程序包設(shè)計(jì) 本系統(tǒng)主要包括 5 大模塊,分別是: 1. 過(guò)濾鏈模塊 2. 提取鏈模塊 3. 寫(xiě)鏈模塊 4. 管理訪問(wèn)鏈接模塊 5. 管理爬蟲(chóng)多線程模塊 相對(duì)應(yīng)的程序包設(shè)計(jì)圖如下: 天津大學(xué) 2021屆本科生畢業(yè)設(shè)計(jì)(論文) 8 圖 33 程序包設(shè)計(jì)圖 ? 是過(guò)濾鏈模塊的程序文件包,主要負(fù)責(zé)過(guò) 濾無(wú)關(guān)的網(wǎng)頁(yè)鏈接。寫(xiě)鏈主要負(fù)責(zé)根據(jù)服務(wù) WSDL 文檔的 URL 下載服務(wù) WSDL 文檔。 ? 提取鏈主要負(fù)責(zé)解析頁(yè)面信息,提取的內(nèi)容包括: ; 細(xì)信息內(nèi)容; ? 寫(xiě)鏈主要負(fù)責(zé)把服務(wù)信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,下載 WSDL 文檔。 Heritrix 框架的多線程管理池可以提供 50 個(gè)線程同時(shí)進(jìn)行抓取工 作, Frontier調(diào)度器負(fù)責(zé)調(diào)度鏈接, Frontier 把新鏈接加入到待訪問(wèn)隊(duì)列中,把未訪問(wèn)鏈接傳遞給線程。詳細(xì)信息包括:服務(wù)描述文檔 WSDL URL、服務(wù)提供商、服務(wù)注冊(cè)時(shí)間、服務(wù)可用率、服務(wù)運(yùn)行服務(wù)器、服務(wù)標(biāo)簽等。 聚焦網(wǎng)絡(luò)爬蟲(chóng)也稱(chēng)為主題爬蟲(chóng) [13],大量的應(yīng)用于互聯(lián)網(wǎng)中,例如基于聚焦爬蟲(chóng)的手機(jī)天氣預(yù)報(bào)系統(tǒng) [6],就是應(yīng)用了聚焦網(wǎng)絡(luò)爬蟲(chóng),通過(guò)計(jì)
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1