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

正文內(nèi)容

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

2025-02-28 00:16本頁面
  

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