



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Python:開發(fā)簡易搜索引擎(2012-06-29 11:45:06) 轉(zhuǎn)載標(biāo)簽: python開發(fā)搜索引擎雜談分類: python Python:開發(fā)簡易搜索引擎對(duì)于內(nèi)容性的站點(diǎn)來說,搜索引擎真是一個(gè)不錯(cuò)的東東。不需要再為了找自己要看的東西翻遍整個(gè)網(wǎng)站,而只是輸入關(guān)鍵字,讓腳本來幫你找。這里,我寫了個(gè)簡單的站內(nèi)搜索引擎,并且要講解一下它是如何實(shí)現(xiàn)的。這個(gè)搜索引擎非常簡單,但是很容易擴(kuò)展。比如,如果你用 urllib 包來抓取網(wǎng)頁,而不是僅僅索引本地的文件,你就可以用它來搜索 internet 上的其他站點(diǎn)了。你所要做的是 建立一個(gè)數(shù)據(jù)庫用來儲(chǔ)存所有的單詞和這些單詞的出現(xiàn)位置 (在示例中我使用的是 MySQL ) 一個(gè)查找單詞和單詞出現(xiàn)位置的腳本,并將其存入數(shù)據(jù)庫中 一個(gè) HTML 的搜索表單 一個(gè)用來從數(shù)據(jù)庫中搜索用戶提交的關(guān)鍵字的腳本 一個(gè)返回搜索結(jié)果的頁面,搜索結(jié)果要鏈向搜索到的相關(guān)頁面 創(chuàng)建數(shù)據(jù)庫在你的MySQL數(shù)據(jù)庫中創(chuàng)建一個(gè)表 (table),命名為 search。我們需要以下5列: search_id, INTEGER, NOT NULL, AUTO_INCREMENT, UNSIGNED word, VARCHAR(50), NOT NULL occurrence, INTEGER, NOT NULL, UNSIGNED url, VARCHAR(200), NOT NULL link, VARCHAR(200), NOT NULL 然后,把 search_id 設(shè)定為主鍵 (PRIMARY KEY)。如果你覺得創(chuàng)建一個(gè) MySQL 數(shù)據(jù)庫有困難的話,不要怕,在互聯(lián)網(wǎng)上相關(guān)的資源非常多。或者你可以看看這個(gè)。確定已經(jīng)把數(shù)據(jù)表放到你的服務(wù)器上,另外還要注意一下安全問題。稍后再繼續(xù)這個(gè)話題 Python 索引器Python 索引器會(huì)遍歷整個(gè)頁面的正文,并記錄每個(gè)單詞及出現(xiàn)的位置。代碼如下:import string import sys import re import MySQLdb # open database and make cursor conn = MySQLdb.connect(host = localhost, user = root, passwd = *, db = *) cursor = conn.cursor() # first empty the database cursor.execute(TRUNCATE TABLE words) def makeIndex(myurl, link): # open local html file href = link page = myurl f = open(page, rb) f.close # initialize stuff here wordcount = 0 words = for line in f.readlines() : line = string.strip( line ) for word in re.split( + string.whitespace + string.punctuation + + , line ) : word = string.lower( word ) if re.match( + string.lowercase + +$ , word ) : wordcount += 1 if words.has_key( word ) : words word += 1 else : words word = 1 sorted_word_list = words.keys() sorted_word_list.sort() # now populate the database for word in sorted_word_list : cursor.execute(INSERT INTO words (word, occurrence, url, link) VALUES (%s,%s,%s,%s),(word,wordsword,page,href) # index every page of your website makeIndex(yourpage1.html, a href=yourpage1My page 1) makeIndex(yourpage2.html, a href=yourpage2My page 2) # etcetera. cursor.close() 在運(yùn)行這個(gè)腳本以后 (別忘了把代碼中的 yourpage 換成真正的頁面),剛剛你創(chuàng)建的數(shù)據(jù)表中已經(jīng)填充了每個(gè)單詞和它在頁面上的出現(xiàn)位置。(譯者注:由于這個(gè) parser 太過于簡單,所以 html tag 也會(huì)被當(dāng)作“單詞”被記錄下來,換個(gè) parser 就可以解決這個(gè)問題) 如果你的網(wǎng)站內(nèi)容變化了,你就需要再運(yùn)行一次這個(gè)腳本。也許一天一次,或者一天兩次,這個(gè)還是取決于你自己的個(gè)人情況。HTML 搜索表單你可能經(jīng)??吹皆谝粋€(gè)頁面的上邊或者側(cè)邊欄上有個(gè)搜索框。把這個(gè) HTML 代碼放到你頁面的某個(gè)地方: 這里有關(guān)于創(chuàng)建 HTML 表單的詳細(xì)信息。這個(gè)表單中最核心的就是 cgi-bin/search.py 這個(gè)腳本,我們下一節(jié)就會(huì)開始探究這個(gè)腳本。搜索腳本下面的腳本通過給定的單詞來從數(shù)據(jù)庫中查找結(jié)果,為了省事我們就叫它 search.py 了:conn = MySQLdb.connect(host = localhost, user = searcher, passwd = *, db = *) cursor = conn.cursor() # get results cursor.execute(SELECT occurrence,url,link FROM words WHERE word=%s ORDER BY occurrence DESC,(word) result = cursor.fet
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 垃圾處理項(xiàng)目場地調(diào)研與咨詢服務(wù)協(xié)議書
- 債務(wù)安全協(xié)議書范本
- 保障性住房拆遷補(bǔ)償與購房協(xié)議書
- 工業(yè)土地轉(zhuǎn)租協(xié)議書范本
- 餐飲企業(yè)加盟店特許經(jīng)營合同范本
- 生物醫(yī)藥研發(fā)場房屋租賃及臨床試驗(yàn)服務(wù)合同
- 珍稀茶具收藏與拍賣合同范本
- 草原生態(tài)環(huán)境補(bǔ)償與治理承包合同
- 橋面坑槽冷再生修補(bǔ)技術(shù)專題
- 支原體肺炎的治療
- 廉潔教育班會(huì)(共37張PPT)
- 通信電子線路創(chuàng)新訓(xùn)練教程部分習(xí)題答案
- 2023北京西城區(qū)初二期末(下)物理試卷及答案
- 山東省煙臺(tái)招遠(yuǎn)市(五四制)2022-2023學(xué)年八年級(jí)下學(xué)期期末語文試題(解析版)
- 柳州職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試題庫
- 藥學(xué)綜合知識(shí)與技能
- 汽車維修服務(wù)清單
- 山東工商學(xué)院馬克思主義基本原理期末復(fù)習(xí)題及參考答案
- 徐州市教師業(yè)務(wù)能力測試題庫(數(shù)學(xué))
- IMC整合營銷傳播培訓(xùn)教材課件
- 2022年天水市武山縣社區(qū)工作者招聘考試試題
評(píng)論
0/150
提交評(píng)論