2007-10-24
自制行业搜索引擎
呵呵,这一段时间尽在瞎鼓捣一些东西,看看结果吧:仪器仪表搜索
这个引擎的基本制作思路如下:
1)、利用爬虫抓取指定数据到数据库。使用爬虫的机制找到包含有所需信息的指定网页,一般都比较有规律,但是各个网站的规则不同。比如:中国仪器仪表国际网 其规则是:disp.asp?id=xx,还有:金泰阳仪器仪表采购网,其规则是:cp.asp?id=xx,所以要分别对待,其内容也要分别处理。可以看看中国仪器仪表国际网的抓取代码片段:(关键是规则)
呵呵,可能运行不到10分钟就会抓取他们近万条的产品,是不是很拽呀,看了我的程序,你会发现哪些所谓的网站录入员的工作都是无用功。我利用这种技术已经在近1个月之内利用课余时间抓取到10万多条记录(当然有用的有效的记录只有2、3万条),
2)、建立索引,放在指定目录。
3)、建立搜索,并自定义分词技术、排序和高亮的规则,然后进行查询。
其中,建立索引已经改造,搜索的排序算法和竞价还在开发当中。搜索不够准确也是迫在眉睫的事。
如果大家有什么好的建议可以互相交流。
这个引擎的基本制作思路如下:
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();
2)、建立索引,放在指定目录。
3)、建立搜索,并自定义分词技术、排序和高亮的规则,然后进行查询。
其中,建立索引已经改造,搜索的排序算法和竞价还在开发当中。搜索不够准确也是迫在眉睫的事。
如果大家有什么好的建议可以互相交流。
评论
咖啡舞者
2008-02-27
互联网数据虽大,但是现在用一个 关键词 很难找到不同的技术文章了。
搜索引擎需要做到把重复内容的排除,然后找到文章原出处就好了,呵呵
搜索引擎需要做到把重复内容的排除,然后找到文章原出处就好了,呵呵
coreymylife
2008-02-23
觉得要通用的话,有待大家实现一个诸如rss一样的标准格式,但是没貌似可能性没有
swantt
2008-02-21
htmlunit也行. 我们这边是用得这个.
jomper
2008-02-20
同意,后续工作才是重点.
不过抓取用python更高效。
不过抓取用python更高效。
waldenlake
2008-02-20
1 .你的效率比较低 一月10万? 我以前也做se玩 单机多线程一天10万差不多(好像还是低),是不是通用的和行业的爬虫效率不同?
2 .行业的专业性很重要。应该还有一些策略来净化搜索内容,比如导向词,专用词库。
3 .有位javaeyer曾经给我留言,抓取不是重点,后续工作才是重要的。
2 .行业的专业性很重要。应该还有一些策略来净化搜索内容,比如导向词,专用词库。
3 .有位javaeyer曾经给我留言,抓取不是重点,后续工作才是重要的。
imjl
2008-02-20
btprince 写道
你爬我也爬,把网络爬死算了,可以直接使用baidu,google等搜索引擎把范围缩小,然后再后处理筛选自己需要的内容。
网络会不会爬死,这不是我们的任务,也不是一般人能解决的。
用baidu和google等搜索引擎在某种程度的确可以起到搜索作用,但是很难做好。
要做好,必须要建立自己的数据平台。
btprince
2008-02-19
你爬我也爬,把网络爬死算了,可以直接使用baidu,google等搜索引擎把范围缩小,然后再后处理筛选自己需要的内容。
linzh
2008-02-19
我公司有个行业搜索的项目,想请你参与,请你致电13602621892林先生联系,或者发送邮件至linzh@twicechina.com
imjl
2007-10-26
通用比较难。。
据我所知,一些大网站还只是模板对应,,通用还做不到。
当然要求不一样,也不大好说。
据我所知,一些大网站还只是模板对应,,通用还做不到。
当然要求不一样,也不大好说。
heweiya
2007-10-26
N,同感,目前正在使用xml做为一个抓取的基本过滤规则,正在制作和完善当中。呵呵。互联网是个大的数据库呀,我们应该好好利用。
另外,也正在制作爬虫的半自动漫游程序。希望共勉!
另外,也正在制作爬虫的半自动漫游程序。希望共勉!
CnXiaowei
2007-10-26
这个东西我觉得应该是作成比较通用的合适一些,可以根据配置不同来抓取不同网站的内容。目前我正在做一个通用的抓取系统,可以根据需要进行配置、抓取数据和发布数据,目前只剩下一个定时抓取没有做,其他已经完成了,使用了一下效果还不错,支持大多数网站,最好再配合一个完善的CMS就齐了。
http://ilvs.cn/server/
这里是我测试的时候抓取出来的内容,效果还算不错只是有些图片显示的有点问题。
http://ilvs.cn/server/
这里是我测试的时候抓取出来的内容,效果还算不错只是有些图片显示的有点问题。
heweiya
2007-10-24
呵呵,还要压缩一些重复的信息,还得上班呵呵。
imjl
2007-10-24
10分钟近万条
近1个月内10万条
这数字看起来真别扭。
10万条太少了,起码百万。
近1个月内10万条
这数字看起来真别扭。
10万条太少了,起码百万。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 116533 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
mvn-project.jpg
共 37 张
共 37 张
最近加入圈子
最新评论
-
Netbeans VS Myeclipse和 ...
冷...Netbeans VS Myeclipse和自动档汽车 vs 手动档汽车 ...
-- by lordhong -
Netbeans VS Myeclipse和 ...
我也喜欢EMACS,JDE挺好用的,就是不知道怎么调试WEB程序
-- by lululau -
使用openfire+jwchat来构 ...
楼上只说了在线消息的发送代码,我想知道:离线消息是怎么保存的呢?
-- by jiahx -
使用openfire+jwchat来构 ...
ajax都存在一个跨域的问题,看apache是用url rewrite解决的,不 ...
-- by ayeah -
如何利用OSWorkflow的func ...
function和condition里的actionId可以通过transien ...
-- by fantasy






评论排行榜