自制行业搜索引擎???? 呵呵,这一段时间尽在瞎鼓捣一些东西,看看结果吧:仪器仪表搜索???? 这个引擎的基本制
自制行业搜索引擎
???? 呵呵,这一段时间尽在瞎鼓捣一些东西,看看结果吧:仪器仪表搜索
???? 这个引擎的基本制作思路如下:
1)、利用爬虫抓取指定数据到数据库。使用爬虫的机制找到包含有所需信息的指定网页,一般都比较有规律,但是各个网站的规则不同。比如:中国仪器仪表国际网?? 其规则是:disp.asp?id=xx,还有:金泰阳仪器仪表采购网,其规则是:cp.asp?id=xx,所以要分别对待,其内容也要分别处理。可以看看中国仪器仪表国际网的抓取代码片段:(关键是规则)
java 代码?
- BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(connection??
- ????????????????.getInputStream(),?charset));?//?使用指定编码接收数据??
- ????????Productinfo?info?=?new?Productinfo();??
- ????????String?line?=?null;??
- ????????String?LoveIt?=?"";??
- ????????String?pix?=?"";??
- ????????int?i?=?0;??
- ????????Manufacturer?M?=?new?Manufacturer();??
- ????????while?((line?=?in.readLine())?!=?null)?{??
- ????????????if?(line.indexOf(pix)?>?0)?{??
- ????????????????i++;??
- ????????????????/**?
- ?????????????????*?把这一行抽出来呀!!,历史任务!?
- ?????????????????*/??
- ????????????????if?(i?==?1)?{??
- ????????????????????int?BeginIt?=?line.indexOf(pix);??
- ????????????????????int?EndinIt?=?line.indexOf("",?BeginIt);??
- ????????????????????LoveIt?=?line.substring(BeginIt?+?pix.length(),?EndinIt);??
- ????????????????????M.setManufacturerName(LoveIt);??
- ????????????????????//?break;??
- ????????????????????if?(LoveIt.length()?>?5)?{??
- ????????????????????????continue;??
- ????????????????????}??
- ????????????????}??
- ????????????????if?(i?==?2)?{??
- ????????????????????int?BeginIt?=?line.indexOf(pix);??
- ????????????????????int?EndinIt?=?line.indexOf("",?BeginIt);??
- ????????????????????LoveIt?=?line.substring(BeginIt?+?pix.length(),?EndinIt);??
- ????????????????????info.setProductName(LoveIt);??
- ????????????????????if?(LoveIt.length()?>?5)?{??
- ????????????????????????continue;??
- ????????????????????}??
- ????????????????}??
- ????????????????if?(i?==?3)?{??
- ????????????????????int?BeginIt?=?line.indexOf(pix);??
- ????????????????????int?EndinIt?=?line.indexOf("",?BeginIt);??
- ????????????????????LoveIt?=?line.substring(BeginIt?+?pix.length(),?EndinIt);??
- ????????????????????info.setProductSpec(LoveIt);??
- ????????????????????if?(LoveIt.length()?>?5)?{??
- ????????????????????????continue;??
- ????????????????????}??
- ????????????????}??
- ????????????????String?ImageUrl?=?Url.replace("disp.asp",?"showing.asp");??
- ????????????????info.setFirstPic("http://www.china-meter.com/btob/backmanage/"??
- ????????????????????????+?ImageUrl);??
- ??
- ????????????????if?(i?==?5)?{??
- ????????????????????int?BeginIt3?=?line.indexOf(pix);??
- ????????????????????int?EndinIt3?=?line.indexOf("",?BeginIt3);??
- ????????????????????if?(EndinIt3?==?-1)?{??
- ????????????????????????line?=?in.readLine();??
- ????????????????????????EndinIt3?=?line.indexOf("",?BeginIt3);??
- ????????????????????????LoveIt?=?line;??
- ????????????????????}??
- ????????????????????if?(LoveIt.length()?==?0)?{??
- ????????????????????????LoveIt?=?line.substring(BeginIt3?+?pix.length(),??
- ????????????????????????????????EndinIt3);??
- ????????????????????}??
- ????????????????????info.setProductDesc(LoveIt);??
- ????????????????????if?(LoveIt.length()?>?5)?{??
- ????????????????????????continue;??
- ????????????????????}??
- ????????????????}??
- ????????????????if?(i?==?8)?{?//?厂商地址??
- ????????????????????int?BeginIt4?=?line.indexOf(pix);??
- ????????????????????int?EndinIt4?=?line.indexOf("",?BeginIt4);??
- ????????????????????LoveIt?=?line.substring(BeginIt4?+?pix.length(),?EndinIt4);??
- ????????????????????M.setAddress(LoveIt);??
- ????????????????????if?(LoveIt.length()?>?5)?{??
- ????????????????????????continue;??
- ????????????????????}??
- ????????????????}??
- ????????????????if?(i?==?9)?{?//?厂商电话??
- ????????????????????int?BeginIt4?=?line.indexOf(pix);??
- ????????????????????int?EndinIt4?=?line.indexOf("",?BeginIt4);??
- ????????????????????LoveIt?=?line.substring(BeginIt4?+?pix.length(),?EndinIt4);??
- ????????????????????M.setTel(LoveIt);??
- ????????????????????if?(LoveIt.length()?>?5)?{??
- ????????????????????????continue;??
- ????????????????????}??
- ????????????????}??
- ??
- ????????????}??
- ????????}??
- ????????in.close();??
??????? 呵呵,可能运行不到10分钟就会抓取他们近万条的产品,是不是很拽呀,看了我的程序,你会发现哪些所谓的网站录入员的工作都是无用功。我利用这种技术已经在近1个月之内利用课余时间抓取到10万多条记录(当然有用的有效的记录只有2、3万条),
2)、建立索引,放在指定目录。
3)、建立搜索,并自定义分词技术、排序和高亮的规则,然后进行查询。
其中,建立索引已经改造,搜索的排序算法和竞价还在开发当中。搜索不够准确也是迫在眉睫的事。
如果大家有什么好的建议可以互相交流。 1 楼 kevin-qma 2007-10-24 o 这样的啊 2 楼 imjl 2007-10-24 10分钟近万条
近1个月内10万条
这数字看起来真别扭。
10万条太少了,起码百万。
3 楼 heweiya 2007-10-24 呵呵,还要压缩一些重复的信息,还得上班呵呵。 4 楼 CnXiaowei 2007-10-26 这个东西我觉得应该是作成比较通用的合适一些,可以根据配置不同来抓取不同网站的内容。目前我正在做一个通用的抓取系统,可以根据需要进行配置、抓取数据和发布数据,目前只剩下一个定时抓取没有做,其他已经完成了,使用了一下效果还不错,支持大多数网站,最好再配合一个完善的CMS就齐了。
http://ilvs.cn/server/
这里是我测试的时候抓取出来的内容,效果还算不错只是有些图片显示的有点问题。 5 楼 heweiya 2007-10-26 N,同感,目前正在使用xml做为一个抓取的基本过滤规则,正在制作和完善当中。呵呵。互联网是个大的数据库呀,我们应该好好利用。
另外,也正在制作爬虫的半自动漫游程序。希望共勉! 6 楼 imjl 2007-10-26 通用比较难。。
据我所知,一些大网站还只是模板对应,,通用还做不到。
当然要求不一样,也不大好说。 7 楼 linzh 2008-02-19 我公司有个行业搜索的项目,想请你参与,请你致电13602621892林先生联系,或者发送邮件至linzh@twicechina.com 8 楼 btprince 2008-02-19 你爬我也爬,把网络爬死算了,可以直接使用baidu,google等搜索引擎把范围缩小,然后再后处理筛选自己需要的内容。 9 楼 imjl 2008-02-20 btprince 写道你爬我也爬,把网络爬死算了,可以直接使用baidu,google等搜索引擎把范围缩小,然后再后处理筛选自己需要的内容。
网络会不会爬死,这不是我们的任务,也不是一般人能解决的。
用baidu和google等搜索引擎在某种程度的确可以起到搜索作用,但是很难做好。
要做好,必须要建立自己的数据平台。 10 楼 waldenlake 2008-02-20 1 .你的效率比较低 一月10万? 我以前也做se玩 单机多线程一天10万差不多(好像还是低),是不是通用的和行业的爬虫效率不同?
2 .行业的专业性很重要。应该还有一些策略来净化搜索内容,比如导向词,专用词库。
3 .有位javaeyer曾经给我留言,抓取不是重点,后续工作才是重要的。 11 楼 jomper 2008-02-20 同意,后续工作才是重点.
不过抓取用python更高效。 12 楼 swantt 2008-02-21 htmlunit也行. 我们这边是用得这个. 13 楼 coreymylife 2008-02-23 觉得要通用的话,有待大家实现一个诸如rss一样的标准格式,但是没貌似可能性没有 14 楼 咖啡舞者 2008-02-27 互联网数据虽大,但是现在用一个 关键词 很难找到不同的技术文章了。
搜索引擎需要做到把重复内容的排除,然后找到文章原出处就好了,呵呵 15 楼 ispring 2008-10-06 严重同意,后续工作才是重点。抓取只是一些规则的定义