全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python:开发简易搜索引擎(2012-06-29 11:45:06) 转载标签: python开发搜索引擎杂谈分类: python Python:开发简易搜索引擎对于内容性的站点来说,搜索引擎真是一个不错的东东。不需要再为了找自己要看的东西翻遍整个网站,而只是输入关键字,让脚本来帮你找。这里,我写了个简单的站内搜索引擎,并且要讲解一下它是如何实现的。这个搜索引擎非常简单,但是很容易扩展。比如,如果你用 urllib 包来抓取网页,而不是仅仅索引本地的文件,你就可以用它来搜索 internet 上的其他站点了。你所要做的是 建立一个数据库用来储存所有的单词和这些单词的出现位置 (在示例中我使用的是 MySQL ) 一个查找单词和单词出现位置的脚本,并将其存入数据库中 一个 HTML 的搜索表单 一个用来从数据库中搜索用户提交的关键字的脚本 一个返回搜索结果的页面,搜索结果要链向搜索到的相关页面 创建数据库在你的MySQL数据库中创建一个表 (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 设定为主键 (PRIMARY KEY)。如果你觉得创建一个 MySQL 数据库有困难的话,不要怕,在互联网上相关的资源非常多。或者你可以看看这个。确定已经把数据表放到你的服务器上,另外还要注意一下安全问题。稍后再继续这个话题 Python 索引器Python 索引器会遍历整个页面的正文,并记录每个单词及出现的位置。代码如下: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() 在运行这个脚本以后 (别忘了把代码中的 yourpage 换成真正的页面),刚刚你创建的数据表中已经填充了每个单词和它在页面上的出现位置。(译者注:由于这个 parser 太过于简单,所以 html tag 也会被当作“单词”被记录下来,换个 parser 就可以解决这个问题) 如果你的网站内容变化了,你就需要再运行一次这个脚本。也许一天一次,或者一天两次,这个还是取决于你自己的个人情况。HTML 搜索表单你可能经常看到在一个页面的上边或者侧边栏上有个搜索框。把这个 HTML 代码放到你页面的某个地方: 这里有关于创建 HTML 表单的详细信息。这个表单中最核心的就是 cgi-bin/search.py 这个脚本,我们下一节就会开始探究这个脚本。搜索脚本下面的脚本通过给定的单词来从数据库中查找结果,为了省事我们就叫它 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等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国农业发展银行湖南省分行校园招聘备考题库含答案详解(b卷)
- 2026年陕西省选调生招录备考题库(面向西北大学)附答案详解(突破训练)
- 2025广西崇左市消防救援支队机关政府专职人员招聘11人备考题库及参考答案详解1套
- 2025陕西宝鸡市岐山县城镇社区专职工作人员招聘5人备考题库含答案详解ab卷
- 2025重庆荣昌区古昌镇人民政府招聘公益岗1人备考题库及完整答案详解
- 2025年安康高新区招聘公安协管员备考题库(10人)及答案详解(新)
- 2026年中国邮政储蓄银行甘肃分行秋季校园招聘备考题库附答案详解(黄金题型)
- 2026年中信银行校园招聘备考题库及答案详解(必刷)
- 2025江西赣州南康赣商村镇银行招聘4人备考题库含答案详解(培优)
- 2025年通榆县信访信息中心公开选调事业编制工作人员备考题库(5人)附答案详解(夺分金卷)
- 初级拳击步法教学教案
- 防校园欺凌安全教育课件
- 风电场防寒防冻知识培训课件
- 镇人大代表培训课件
- 轻断食养生知识培训课件
- 2026春夏·淘宝天猫运动户外鞋服趋势白皮书
- 2025年计量检定员试题及答案
- 石墨化工技能操作考核试卷及答案
- 业主满意度调查评价表模板
- 小学英语教师小组合作-专题讲座《把精彩还给学生》
- 全国中小学班主任2025年网络培训示范班在线考试试题及答案【附:教师培训心得】
评论
0/150
提交评论