



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python:開發(fā)簡(jiǎn)易搜索引擎(2012-06-29 11:45:06) 轉(zhuǎn)載標(biāo)簽: python開發(fā)搜索引擎雜談分類: python Python:開發(fā)簡(jiǎn)易搜索引擎對(duì)于內(nèi)容性的站點(diǎn)來說,搜索引擎真是一個(gè)不錯(cuò)的東東。不需要再為了找自己要看的東西翻遍整個(gè)網(wǎng)站,而只是輸入關(guān)鍵字,讓腳本來幫你找。這里,我寫了個(gè)簡(jiǎn)單的站內(nèi)搜索引擎,并且要講解一下它是如何實(shí)現(xiàn)的。這個(gè)搜索引擎非常簡(jiǎn)單,但是很容易擴(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 太過于簡(jiǎn)單,所以 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中政治議題中心教學(xué)法在提高學(xué)生信息獲取與處理能力方面的應(yīng)用研究論文
- 初中語文名著閱讀教學(xué)中的閱讀策略與閱讀習(xí)慣養(yǎng)成研究論文
- 校園文化品牌傳播策略對(duì)小學(xué)生創(chuàng)新能力培養(yǎng)的影響研究論文
- 初中生科技展覽學(xué)習(xí)體驗(yàn)與科學(xué)探究能力提升研究論文
- 基于問題導(dǎo)向的高中化學(xué)實(shí)驗(yàn)創(chuàng)新能力培養(yǎng)研究論文
- 藝考生課程管理制度
- 小學(xué)語文《樹和喜鵲》課件
- 設(shè)備維修個(gè)人工作計(jì)劃
- 設(shè)備開箱檢驗(yàn)記錄
- 2025年山東省濟(jì)寧市中考?xì)v史模擬試卷(含答案)
- 《我和我的同學(xué)》的主題班會(huì)
- 高中生知識(shí)搶答競(jìng)賽題
- 抖音直播知識(shí)考試題庫200題(含答案)
- 廉潔教育班會(huì)(共37張PPT)
- 2023高效制冷機(jī)房系統(tǒng)應(yīng)用技術(shù)規(guī)程
- 通信電子線路創(chuàng)新訓(xùn)練教程部分習(xí)題答案
- 前沿科學(xué)與創(chuàng)新學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 柳州職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試題庫
- 藥學(xué)綜合知識(shí)與技能
- 汽車維修服務(wù)清單
- 2022年天水市武山縣社區(qū)工作者招聘考試試題
評(píng)論
0/150
提交評(píng)論