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

正文內(nèi)容

基于網(wǎng)絡(luò)爬蟲的搜索引擎設(shè)計(jì)與實(shí)現(xiàn)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-01-04 10:20 本頁面
 

【文章內(nèi)容簡介】 =images/ width=162 height=71 /td td img src=images/ width=1 height=71 alt=/td /tr tr td colspan=4 rowspan=2 /td td img src=images/ width=1 height=31 alt=/td /tr tr td img src=images/ width=1 height=495 alt=/td /tr /table ! End ImageReady Slices /form /body /html servlet 的實(shí)現(xiàn) 用 Servlet 來響應(yīng)用戶的請求,實(shí)現(xiàn)搜索參數(shù)的傳入。具體代碼設(shè)計(jì)為: package crawer。 import .*。 import .*。 import .*。 import .*。 import .*。 public class MyServlet extends HttpServlet { private static final String CONTENT_TYPE = text/html。 charset=GBK。 public Timer timer。 myspider crawler 。 ArrayList String myresult。//搜索到的結(jié)果 //Initialize global variables public void init() throws ServletException { } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String var0 = (param0)。 if (var0 == null) { var0 = 。 } (CONTENT_TYPE)。 PrintWriter out = ()。 byte[] bytes=(ISO88591)。 String search=new String(bytes,GB2312)。 crawler = new myspider( //Thread search=new Thread(crawler)。 // ()。 //此處開始爬行 ()。 //啟動定時(shí)器,在時(shí)間內(nèi)檢查是否有結(jié)果,并顯示 myresult=new ArrayList String()。 //搜索到的結(jié)果 myresult=()。 (html)。 (headtitle爬蟲演示 /title/head)。 (p注意默認(rèn)起始站點(diǎn)為: 10/p)。 (p搜索 +search+結(jié)果 :/p)。 (body bgcolor=\c0c0c0\)。 String te。 for(int i=0。i()。i++){ te=(i+1)。 (p+te+、 +(i)+/p)。//輸出結(jié)果 } if(()==0){ (p對不起 ,沒有找到結(jié)果 /p)。 } (/body)。 (/html)。 ()。 } //Clean up resources public void destroy() { } } 網(wǎng)頁的解析實(shí)現(xiàn) 網(wǎng)頁的分析 網(wǎng)頁文檔作為 一 種半結(jié)構(gòu)化文本是一種界于自由文本和結(jié)構(gòu)化文本之間的數(shù)據(jù),它通常沒有嚴(yán)格的格式。對于這類文本一般是通過分析文本中特有的標(biāo)志性字符進(jìn)行爬行處理,具體而言就是分析 HTML 語言中的各種標(biāo)記之間的 關(guān)系。網(wǎng)頁信息的載體是網(wǎng)頁文本,用超文本標(biāo)記語言編寫。由 HTML 標(biāo)準(zhǔn)定義了一組元素類型,不同類型的元素分別描述文本、圖像和超文本鏈接等。一個(gè)元素的描述一般由開始標(biāo)記 (Start Tag)、內(nèi)容 (Content)、結(jié)束標(biāo)記 (End Tag)所組成。元素名稱出現(xiàn)在開始標(biāo)記中,在 HTML 語言中標(biāo)記為 元素名稱 ,對應(yīng)的結(jié)束標(biāo)記為 /元素名稱 ,內(nèi)容出現(xiàn)在開始標(biāo)記和結(jié)束標(biāo)記之間。通過構(gòu)造網(wǎng)頁標(biāo)記樹的方法可反映網(wǎng)頁的結(jié)構(gòu)特點(diǎn), 下 圖是一個(gè)簡單的動態(tài)網(wǎng)頁標(biāo)記樹 h t m lh e a d b o d yt a b l et i t l el i n k 1 l i n k 2 網(wǎng)頁的處理隊(duì)列 頁面處理隊(duì)列中保存的是頁面的 URL,它實(shí)際上是由等待隊(duì)列、處理隊(duì)列、錯(cuò)誤隊(duì)列、完成隊(duì)列組成。正是通過它們,某個(gè)具體的移動 Spider 得以完成對該 Spider 所對應(yīng) web 的全部搜索任務(wù)。頁面隊(duì)列中保存的頁面的 URL 都是屬于內(nèi)鏈接。 (1)等待隊(duì)列 (WaitURL)。在這個(gè)隊(duì)列中, URL 等待被移動 Spider 程序處理。新發(fā)現(xiàn)的 URL被加入到這個(gè)隊(duì)列中。 (2)處理隊(duì)列 (Proces— sUI )。當(dāng)移動 Spider 程序開始處理 URL 時(shí),它們被傳送到這一隊(duì)列,但同一個(gè) URL 不能被多次 處理,因?yàn)檫@樣是浪費(fèi)資源。當(dāng)一個(gè) URL 被處理過后,它將被移送到錯(cuò)誤隊(duì)列或者是完成隊(duì)列。 (3)錯(cuò)誤隊(duì)列 (ErrorURL)。如果在處理某一頁面時(shí)發(fā)生錯(cuò)誤,它的 URL 將被加入到錯(cuò)誤隊(duì)列,該 URL 到達(dá)這一隊(duì)列后將不再移人其他隊(duì)列。一旦網(wǎng)頁移入錯(cuò)誤隊(duì)列,移動 Spider 程序?qū)⒉粫賹λ鬟M(jìn)一步處理。 (4)完成隊(duì)列 (LaunchURL)。如果在處理網(wǎng)頁時(shí)沒有發(fā)生錯(cuò)誤,處理完畢時(shí),該 URL 將被加入到完成隊(duì)列,該 URL 到達(dá)這一隊(duì)列后將不再移人其他隊(duì)列。 同一時(shí)間一個(gè) URL 只能在一個(gè)隊(duì)列中,這也叫做 URL 的狀態(tài),這是因 為人們常常使用狀態(tài)圖描述計(jì)算機(jī)程序,程序按照狀態(tài)圖從一個(gè)狀態(tài)變換到下一個(gè)狀態(tài)實(shí)際上,當(dāng)發(fā)現(xiàn) URL(內(nèi)鏈接 )時(shí),移動 Spider 會檢查該 URL 是否已經(jīng)存在于完成隊(duì)列或錯(cuò)誤隊(duì)列中,如果已經(jīng)存在于上述兩種隊(duì)列的任何一個(gè)隊(duì)列中,那么移動 Spider 將不會對此 URL 進(jìn)行任何處理。由此,可避免某個(gè)頁面被重復(fù)處理,防止陷入死循環(huán)。 搜索字符串的匹配 對于要搜索的字符串,必須在抓取的網(wǎng)頁中進(jìn)行匹配檢查,如果存在于該網(wǎng)頁中,則把地址添加到輸出隊(duì)列中。 網(wǎng)頁分析類的實(shí)現(xiàn) package crawer。 //html 文件解析類 import 。 import 。 import 。 import 。 import 。 import 。 import 。 import 。 import 。 import 。 import 。 import 。 import 。 //類實(shí)體 public class HtmlParser { ArrayList String fafa=new ArrayList String()。 URL base = null。 // 基本 URL public HtmlParser (String PageContent) { int state = 0。 StringBuffer sb = new StringBuffer()。 int i = ()。 //(循環(huán)讀取解析 )。 for (int j = 0。 j i。 j++) { //循環(huán)讀取解析 / switch (state) { case 0: if ((j) == 39。39。) state = 39。39。 break。 case 39。39。: if ((j) == 39。39。) { state = 0。 analyze(())。 (0)。 } else { ((char) (j))。 } } } } public void analyze(String param) { StringTokenizer st = new StringTokenizer(param)。 if (() 2) return。 String first_word = ().toLowerCase()。 if ((a)) { analyzeAnchor(())。 } else if ((frame)) { analyzeFrame(())。 } else if ((base)) { extractBase(())。 } } /**分析 a分析 . */ void analyzeAnchor(String anchor) { String href = extract(anchor, href)。 if (href == null) return。 addURL( href)。 } /**分析 frame 分析 . */ void analyzeFrame(String frame) { String src = extract(frame, src)。 if (src == null) return。 addURL(src)。 } /** 由 base標(biāo)記中分離 url. */ void extractBase(String b) { String b2 = extract(b, href)。 if (b2 != null) { try { base = new URL( b2)。 } catch (MalformedURLException e) { ()。 } } } String extract(String line, String key) { try { key = ()。 String lower_case = ()。 int i = (key)。 if (i 0) return null。 i += ()。 if ((i) != 39。=39。) return null。 i++。 int i2。 if ((i) == 39。39。) { i++。 i2 = (39。39。, i)。 if (i2 0) { return (i)。 } else { return (i, i2)。 } } else { int targ = ()。 for (i2 = i。 i targ。 i++) { if (((i))) break。 } return (i, i2)。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1