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

正文內(nèi)容

畢業(yè)論文-面向webservice的網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)與實(shí)現(xiàn)(參考版)

2025-06-08 05:12本頁(yè)面
  

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