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

正文內(nèi)容

網(wǎng)絡(luò)爬蟲(chóng)技術(shù)探究畢業(yè)設(shè)計(jì)-資料下載頁(yè)

2025-02-28 00:16本頁(yè)面
  

【正文】 結(jié)尾是空格或者 符號(hào)。 通過(guò)這種方法,我們獲取網(wǎng)頁(yè) 中大部分的 URLs。但是有些 URLs 是通過(guò)提交表單,或者通過(guò) javascript 來(lái)跳轉(zhuǎn)的。這些情況就需要更細(xì)致的考慮,才能獲取 [13]。 URL 檢測(cè)模塊 該模塊主要是用于剔除非站內(nèi) URL或無(wú)法訪問(wèn)的 URL,因?yàn)?截取出來(lái)的字符串,可能為相對(duì)地址或者絕對(duì)地址。所以需要判斷 URL 為絕對(duì)地址,還是相對(duì)地址。相對(duì)地址需要先轉(zhuǎn)化為絕對(duì)地址,再進(jìn)行過(guò)濾。因?yàn)榻馕龀鰜?lái)的 URL 地址可能是一些文件的地址,或者為 javascript文件或者 css 文件。這些格式的 URL 是無(wú)法獲取 HTML代碼的,也就不可能進(jìn)行 URL 解析 。所以我們需要過(guò)濾掉這些 URLs。然后再進(jìn)行URL 消重處理,最后加入到 URL 等待隊(duì)列 [14]。 為了把爬行限制在同一站點(diǎn)內(nèi)需要截?cái)嘀赶蛘就獾逆溄?, 保證 SPIDER 總在站 28 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 內(nèi)執(zhí)行 ,即準(zhǔn)確地根據(jù)超鏈 URL判斷超鏈?zhǔn)欠裰赶蛘就?。 由 RFC對(duì) URL的定義可知 ,URL 的格式為 一般情況下 , 同一網(wǎng)站內(nèi)所有頁(yè)面對(duì)應(yīng) URL 的 host 是相同的 , 所以可以使用 host 匹配作為判斷超鏈?zhǔn)欠裰赶蛘就獾臉?biāo)準(zhǔn) 。 進(jìn)一步研究發(fā)現(xiàn) ,很多大型網(wǎng)站中一個(gè)分類(lèi)目錄對(duì)應(yīng)一個(gè)主機(jī) , 所以前面 的判斷標(biāo)準(zhǔn)必須改進(jìn) 。 研究 host 的組成可知 , host 的格式一般為 [站內(nèi)分類(lèi) .站點(diǎn)標(biāo)志串 .站點(diǎn)類(lèi)型各異的串 ]。 站點(diǎn)類(lèi)型串只有 [ |edu|gov||國(guó)家域名 ]幾種類(lèi)型 , 所以我們?nèi)≌军c(diǎn)類(lèi)型各異串前面的串 , 即站點(diǎn)標(biāo)志串作匹配 ,超鏈 URL 的 host 中是否包含此串 , 為超鏈?zhǔn)欠裾緝?nèi)的判斷標(biāo)準(zhǔn) 。 下面的這段代碼就是判斷是否非站內(nèi)地址,代碼如下: String[] host_inner={.,.,.}。 for(int i=0。i。i++) { if((host_inner[i])) { String str = (0,(host_inner[i]))。 if((((39。.39。))+host_inner[i])) return true。 else return false。 } } URL 存儲(chǔ)模塊 我們通過(guò) 鏈表類(lèi) URLNode 實(shí)現(xiàn) URL 存儲(chǔ),鏈表的優(yōu)點(diǎn)在于插入數(shù)量可以無(wú)限,所以通過(guò)該類(lèi)較容易實(shí)現(xiàn) URL 的管理。 public void startSnatch(String urlStr) { int id = ()+1。 29 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 String urlString = urlStr。 if (!(urlStr)) { // 最初查詢的網(wǎng)頁(yè)默認(rèn)為合法的 (URL ERROR!!!)。 } urlQueueHead = new UrlNode()。 (null)。 (urlString)。 lengthOfWaiteQueue++。 urlQueueRear = urlQueueHead。 while (() != null) { // 如果待抓取的隊(duì)列不為空,則操作 urlString = ()。 // 待隊(duì)列非空時(shí)首元素出隊(duì)列, 則 抓取 urlQueueHead = ()。 // 抓取的網(wǎng)頁(yè) URL要出對(duì)列 lengthOfWaiteQueue。 (urlString)。 // 把訪問(wèn)過(guò)的 URL存入訪問(wèn)記錄向量 snatch(id,urlString)。 id++。 } } 郵箱地址解析 我們知道,現(xiàn)在網(wǎng)絡(luò)上有多營(yíng)銷(xiāo)策略,群發(fā)郵箱是一種途徑,如何大量的獲得有效且定向的 郵箱地址是很多營(yíng)銷(xiāo)者最為關(guān)注的問(wèn)題,因此郵箱抓取是一個(gè)很有用的功能。 郵箱跟 URL 都是頁(yè)面中的重要的內(nèi)容,所有解析方式差不多,郵箱地址解析主要通過(guò)讀取 body 標(biāo)簽的內(nèi)容,通過(guò)郵箱地址正則表達(dá)式判斷是否是合法的地址,然后解析出來(lái)。代碼實(shí)現(xiàn)如下: public static String parse(String line) { 30 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 Pattern p = ([azAZ09_]+@[azAZ09_]+(\\.[azAZ09_]+)+)。//郵箱的//正則表達(dá)式 String temp=。 Matcher m = (line)。 while(()) {//是否有匹配的郵箱地址 temp=temp+ +()。 } return temp。 } URL 消重管理 消重管理是為了防止重復(fù)下載 URL, 具體代碼如下: private static boolean hasAccessed(String urlString) { boolean accessed = false。 if (()) return accessed。 for (int i = 0。 i () amp。amp。 !accessed。 i++) { if (((i))) accessed = true。 } return accessed。 } 檢測(cè) URL 是否是已訪問(wèn)過(guò)的網(wǎng)頁(yè) , 首先要檢測(cè)一下 urlString 的 URL 合法性將已訪問(wèn)的 URL 加入到 “ 已訪問(wèn) URL 隊(duì)列 ” [15]。 數(shù)據(jù)庫(kù)實(shí)現(xiàn) . 使用 JDBC 連接池技術(shù)連接 Mysql 數(shù)據(jù)庫(kù),代碼如下: 31 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 package 。 import 。 import 。 import 。 import 。 public class DBOperator { static String driverName = 。 static String userName = pachong。 static String password = 123456。 static String url = jdbc: dataBase=javadatabase。 static Connection connection = null。 static Statement state = null。 static String sqlStatement = null。 /** * 初始化數(shù)據(jù)庫(kù),把已經(jīng)有的表格刪除掉,建立新的所需要的數(shù)據(jù)庫(kù)表格 */ public static void initDB() { sqlStatement = 。 try { (driverName).newInstance()。 connection = (url, userName, password)。 state = ()。 (sqlStatement)。 state = null。 ()。 } catch (ClassNotFoundException e) { ()。 32 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 } catch (InstantiationException e) { ()。 } catch (IllegalAccessException e) { ()。 } catch (SQLException e) { ()。 } } /** * 此方法把記錄存入數(shù)據(jù)庫(kù)中 */ public static void saveFieldToDB(int id, String urlField, String titleField, String bodyField){ sqlStatement = insert into + values( + id + ,39。 + urlField + 39。,39。 + titleField + 39。,39。 + bodyField +39。)。 try { (driverName).newInstance()。 connection = (url, userName, password)。 state = ()。 (sqlStatement)。 state = null。 ()。 } catch (ClassNotFoundException e) { ()。 } catch (InstantiationException e) { ()。 } catch (IllegalAccessException e) { 33 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 ()。 } catch (SQLException e) { ()。 } } } 本章小結(jié) 此系統(tǒng)是 一個(gè) 網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),在開(kāi)發(fā)的過(guò)程中發(fā)現(xiàn)要做一個(gè) 完整的系統(tǒng)需要的技術(shù)是很多的,需要經(jīng)常編程和查看資料,才能開(kāi)發(fā) 出 良好的系統(tǒng),也讓我知道 了為什么開(kāi)發(fā)一個(gè)大型的系統(tǒng)需要許多人一個(gè)團(tuán)隊(duì)的協(xié)作才能完成。在開(kāi)發(fā)的過(guò)程中許多需要的技術(shù)都不懂或者用的不熟練,只有不停地查資料問(wèn)百度,在這個(gè)過(guò)程中學(xué)習(xí)到了很多新知識(shí),讓我受益匪淺。 34 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 5 系統(tǒng)測(cè)試 抓取測(cè)試 我以 網(wǎng)易論壇地址 URL 進(jìn)行系統(tǒng)的測(cè)試 ,通過(guò)本 爬蟲(chóng)程序 實(shí)現(xiàn) URLs 解析以及內(nèi)容抓取 。 首先登陸 首頁(yè),出現(xiàn) 前臺(tái) 的 界面,如圖 51 所示。 圖 51 前臺(tái)爬行和搜索界面 通過(guò)觀察,我們發(fā)現(xiàn),前臺(tái)由兩個(gè)文本框兩個(gè)按鈕,第一個(gè)文本框 用于輸入種子地址,第二個(gè)文本框用于輸入搜索的關(guān)鍵字。 當(dāng)用戶輸入一個(gè)種子地址到一個(gè)文本框中,然后按“爬一下”后,系統(tǒng)將用戶輸入的地址傳遞到后臺(tái),然后從該網(wǎng)站開(kāi)始爬行,直到所有的 URLs 全部抓取完畢, 如此同時(shí),用戶可以在第二個(gè)文本框中輸入特殊關(guān)鍵字,查詢到所需要的內(nèi)容信息,系統(tǒng)將會(huì)根據(jù)用戶的關(guān)鍵字匹配數(shù)據(jù)中的內(nèi)容信息,然后再將數(shù)據(jù)輸出到前臺(tái),用戶就可以獲得想要的信息。 35 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 爬蟲(chóng)程序爬行了 幾分鐘后總共爬了幾百條 URLs,下面是從數(shù)據(jù)庫(kù)里截圖的 3 字段的爬行結(jié)果。 圖 52 是抓取到的 URL 連接 , 圖 53 是在頁(yè)面中抓取 的郵箱地址,通過(guò)圖 52,我們發(fā)現(xiàn)不存在非法鏈接,說(shuō)明爬蟲(chóng)有效的實(shí)現(xiàn)了既有的功能。 如圖 52 所示。 圖 52 解析到的 URL地址 圖 53郵箱地址 通過(guò)圖 52 和圖 53,我們可以看到,程序基本完成了對(duì)既定的 URL 地址實(shí)現(xiàn)了站內(nèi)地址的解析和郵箱地址信息的抓取,基本實(shí)現(xiàn)了程序要求的功能。但是程序的功能比較單一,功能不夠強(qiáng)大,只是簡(jiǎn)單的模擬了真正意思上的搜索引擎網(wǎng)絡(luò)爬蟲(chóng)的爬蟲(chóng)的過(guò)程。 但是通過(guò)實(shí)現(xiàn)基本的爬蟲(chóng)程序的爬行原理,我們可就基本的掌握最核心的爬蟲(chóng)策略,然后我們可 以在原有的基礎(chǔ)上做出更加強(qiáng)大的爬蟲(chóng)程序來(lái),實(shí)現(xiàn)更多有意義的功能。 本程序還有很多的不足之除,希望通過(guò)進(jìn)一步的學(xué)習(xí),可以寫(xiě)出更好的爬蟲(chóng)程 36 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 序。并且圖形界面設(shè)計(jì)的也不太盡如人意。這在以后的開(kāi)發(fā)中還要進(jìn)一步的加強(qiáng)和重視。 圖 54是 抓取的部分 URLs中 頁(yè)面的標(biāo)題。 我們可以看到 有的一些 標(biāo)題 出現(xiàn)亂碼,這是由于不同網(wǎng)站編碼格式不同,導(dǎo)致了讀取數(shù)據(jù)時(shí)不 能 統(tǒng)一的處理漢字 所致 ,所以 才 出現(xiàn)了亂碼。 后續(xù)還要繼續(xù)完善這個(gè)程序,如圖 54 所示。 圖 54 頁(yè)面標(biāo)題 37 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 搜索測(cè)試 接下來(lái)測(cè)試搜索功能,因?yàn)閿?shù)據(jù)已采集到數(shù)據(jù)庫(kù),可以 通過(guò)關(guān)鍵字前臺(tái)調(diào)用, 近似已模仿了百度搜索。我們以關(guān)鍵字 “ 新聞 ” 搜索 如圖 55 所示。 圖 55 搜索結(jié)果 至此 爬蟲(chóng)程序的 測(cè)試 工作 完畢。 我們可以看到,程序有很多的地方不足,我希望在以后的工作學(xué)習(xí)中繼續(xù)完善該程序的功能和錯(cuò)誤,以便提高自己的動(dòng)手能力和編程的熟練程度。 38 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 本章小結(jié) 本章主要是對(duì)系統(tǒng)進(jìn)行測(cè)試,編制測(cè)試大綱。測(cè)試大綱是測(cè)試的依據(jù)。它明確詳盡地規(guī)定了在測(cè)試中針對(duì)系統(tǒng)的每一項(xiàng)功能或特性所必須完成的基本測(cè)試項(xiàng)目和測(cè)試完成的標(biāo)準(zhǔn),根據(jù)測(cè)試大綱設(shè)計(jì)和生成測(cè)試用例。在設(shè)計(jì)測(cè)試用例的時(shí)候,可綜合利用前面 介紹的測(cè)試用例和設(shè)計(jì)技術(shù),產(chǎn)生測(cè)試設(shè)計(jì)說(shuō)明文檔,其內(nèi)容主要有被測(cè)項(xiàng)目、輸人數(shù)據(jù)、測(cè)試過(guò)程、預(yù)期輸出結(jié)果等,實(shí)施測(cè)試。測(cè)試的實(shí)施階段是由一系列的測(cè)試周期組成的。在每個(gè)測(cè)試周期中,測(cè)試人員和開(kāi)發(fā)人員將依據(jù)預(yù)先編制好的測(cè)試大綱和準(zhǔn)備好的測(cè)試用例,對(duì)被測(cè)軟件或設(shè)備進(jìn)行完整的測(cè)試。
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1