自己动手写搜索引擎(常搜吧历程七#解析文档之HTML#)(Java、Lucene、hadoop)

一、垂直搜索介绍

1、垂直搜索--即需要抓去大量的网页,分析其中的数据。垂直搜索更着重于正文内容模式分离,数据调整,相关链接分析,是一种结构化分析过程。

2、垂直搜索技术主要分为两个层次:模版级和网页库级

3、模版级是针对网页进行模版设定或者自动生成模版的方式抽取数据,对网页的采集也是针对性的采集,适合规模比较小、信息源少且稳定的需求,优点是快速实施、成本低、灵活性强,缺点是后期维护成本高,信息源和信息量小。

4、网页库级和模版方式最大的区别是对具体网页不依赖,可针对任意正常的网页信息采集信息抽取。缺点是其灵活性差、成本高。


垂直搜索大致需要以下技术:

1、信息采集技术

2、网页信息抽取技术

3、信息的处理技术(重复识别、聚类、比较、分析等)

4、语意相关性分析

5、分词

6、索引


二、使用HttpClient采集页面

1、HTTPClient项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程。

2、HTTPClient是基于HttpCore实现的一个HTTP/1.1兼容HTTP客户端,它提供了一系列可重用的客户端身份验证、HTTP状态保持、HTTP链接管理module。功能丰富的HTTPClient同时兼具出色的可拓展性和健壮性,目前已经成为了最为流行的JavaHttp客户端组件,为开发Web浏览器、WebService客户端提供了很大的便利。

下载地址: http://hc.apache.org/downloads.cgi

使用HttpClient

一般情况下,使用HttpClient需要以下5个步骤:

1、创建HttpClient的实例

2、创建某种连接方法的实例,在这里是最常见的是Get和Post

3、调用第一步中创建好的HttpClient实例的execute方法,得到执行结果

4、释放连接

5、对得到后的内容进行处理


下面来看两个抓去网页的实例

1、抓取搜索后的页面然后保存

package com.qianyan.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class TestHttpClient {

	public static void main(String[] args) throws ClientProtocolException, IOException {
		HttpClient httpClient = new DefaultHttpClient();
		HttpGet httpGet = new HttpGet("http://www.baidu.com/s?wd=java");
		HttpResponse response = httpClient.execute(httpGet);
		HttpEntity entity = response.getEntity();

		InputStream ins = entity.getContent();
		BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
		FileWriter writer = new FileWriter(new File("E:/baidu.htm"));

		String strLine = reader.readLine();
		while (null != strLine) {
			writer.write(strLine);
			strLine = reader.readLine();
		}
		writer.close();
		ins.close();
		reader.close();
		httpClient.getConnectionManager().shutdown();
		System.out.println("网页生成完毕!");
	}
}

1、抓取搜索后的页面打印出来
package com.qianyan.test;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值