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

正文內(nèi)容

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

2025-06-09 01:32本頁面
  

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