`

Java抽取HTML内容

    博客分类:
  • seo
阅读更多
利用Java抽取HTML中的内容当然不想JavaScript中那么简单(obj.innerHTML),但绝对是可以实现的,这里给大家介绍一种。

思路很直接:利用正则表达式配置html代码,然后删除这些代码。
当然还有一种方法是直接配置中文,这种方法虽然明显有问题,但对纯中文内容还是很准确。两种方法这里都提供。

我们需要配置的文字如下:
<td><a target=\"_blank\" href=\"http://www.baidu.com/baidu?cl=3&tn=baidutop10&fr=top1000&wd=%A1%B6%CC%C6%C9%BD%B4%F3%B5%D8%D5%F0%A1%B7%B9%AB%D3%B3\">《唐山大地震》公映</a></td>

我们需要从中抽取出“唐山大地震》公映

方法一:查找出html标签,然后删除
public void findContent(){
		// 配置html标记。
		Pattern p = Pattern.compile("<(\\S*?)[^>]*>.*?| <.*? />");
		String html = "<td><a target=\"_blank\" href=\"http://www.baidu.com/baidu?cl=3&tn=baidutop10&fr=top1000&wd=%A1%B6%CC%C6%C9%BD%B4%F3%B5%D8%D5%F0%A1%B7%B9%AB%D3%B3\">《唐山大地震》公映</a></td>";
		Matcher m = p.matcher(html);

		String rs = new String(html);
		// 找出所有html标记。
		while (m.find()) {
			System.out.println(m.group());
			// 删除html标记。
			rs = rs.replace(m.group(), "");
		}
		System.out.println("-----");
		System.out.println(rs);
	}


方法二:匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
public void findContent2(){
		// 匹配双字节字符(包括汉字在内)
		Pattern p = Pattern.compile("[^\\x00-\\xff]");
		String html = "<td><a target=\"_blank\" href=\"http://www.baidu.com/baidu?cl=3&tn=baidutop10&fr=top1000&wd=%A1%B6%CC%C6%C9%BD%B4%F3%B5%D8%D5%F0%A1%B7%B9%AB%D3%B3\">《唐山大地震》公映</a></td>";
		Matcher m = p.matcher(html);

		while (m.find()) {
			System.out.print(m.group());
		}
	}


好了,以上是我提供的两种方法,希望对大家有些帮助,也希望大家提供更多更好的方法。

文章地址:http://javapub.iteye.com/blog/719658
2
3
分享到:
评论
4 楼 javapub 2010-07-23  
mercyblitz 写道
javapub 写道
利用Split效率低一些吧,而且利用Split分割的代码量也不少,判断也不少。


在很多地方需要中间结果,再处理。

明白,我这里提供的方法,其实类似于一个网页爬虫,它不在乎你html里的东西,只在乎内容。
public class Test001 {
	List<String> rsList = new ArrayList<String>();
	private Test001() {
		try {
			loadHtml();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private void loadHtml() throws IOException {
		// 定义一个url类的实例。
		URL url = new URL("http://top.baidu.com/buzz/top10.html");
		// 以特定格式读取文件流。
		InputStreamReader isr = new InputStreamReader(url.openStream(),
				"gb2312");
		BufferedReader br = new BufferedReader(isr);
		String s;

		boolean beginFind = false;
		while (null != (s = br.readLine())) {
			if ("<tbody id=\"listdata\">".equals(s.trim())) {
				beginFind = true;
			} else if ("</tbody>".equals(s.trim())) {
				break;
			}

			if (beginFind) {
				if(s.trim().startsWith("<td><a")){
					rsList.add(findContent(s.trim()));
				}
			}
		}
		
		for (int i = 0; i < rsList.size(); i++) {
			System.out.println(rsList.get(i));
		}
	}

	public String findContent(String html) {
		// 配置html标记。
		Pattern p = Pattern.compile("<(\\S*?)[^>]*>.*?| <.*? />");
		Matcher m = p.matcher(html);

		String rs = new String(html);
		// 找出所有html标记。
		while (m.find()) {
			// 删除html标记。
			rs = rs.replace(m.group(), "");
		}
		return rs;
	}

	public static void main(String[] args) throws IOException {
		new Test001();
	}
}


利用上面的代码,可以将百度风云榜里的内容完整拿出来。
3 楼 mercyblitz 2010-07-23  
javapub 写道
利用Split效率低一些吧,而且利用Split分割的代码量也不少,判断也不少。


在很多地方需要中间结果,再处理。
2 楼 javapub 2010-07-23  
利用Split效率低一些吧,而且利用Split分割的代码量也不少,判断也不少。
1 楼 mercyblitz 2010-07-23  
第一种方法太难了,个人认为做Split的正则分割 >< 之间的好些。

相关推荐

    JAVA上百实例源码以及开源项目源代码

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...

    HTML抽取器Xsoup.zip

    Xsoup是基于Jsoup开发的HTML抽取器,提供了XPath支持。 相比另一个常用的基于XPath的HTML抽取器HtmlCleaner,Xsoup有较大的性能优势,解析时间和抽取时间都只有HtmlCleaner的一半。同时Xsoup提供全面的XPath解析...

    ScalaScraper一个Scala库用于HTML页面抽取内容

    Scala Scraper:一个 Scala 库用于HTML页面抽取内容

    带html的文章摘要生成,内容分割 类

    很多的文章发布系统,信息管理系统,新闻发布系统中的文章内容可能会比较长,用户可能会有两个需求,一个是自动生成文章的摘要,比如新浪的文章上面都会有一个摘要说明;另一个需求就是文章太长,可以把文章分页显示...

    java源码包---java 源码 大量 实例

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...

    java实现的网页爬虫1.5版本聚焦爬虫抽取网页html

    java实现的网页爬虫1.5版本聚焦爬虫抽取网页html 1,对制定网页进行抽取; 2,获取指定网页中的所有URL地址; 3,把URL地址分类保存到数据库中;

    基于统计的网页正文信息抽取

    本方法中用到了网页分析器htmlparser,采用Java语言编程,工具是eclipse。可以实现把正文放在table结点的HTML网页的正文信息抽取功能。

    java源码包4

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 ...

    JAVA上百实例源码以及开源项目

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...

    java源码包3

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 ...

    java源码包2

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 ...

    java开源包11

    Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作类库 [ini4j] [ini4j] 是一个简单的Java类库,用来读写Windows的ini配置...

    java开源包6

    Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作类库 [ini4j] [ini4j] 是一个简单的Java类库,用来读写Windows的ini配置...

    java开源包9

    Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作类库 [ini4j] [ini4j] 是一个简单的Java类库,用来读写Windows的ini配置...

    java开源包101

    Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作类库 [ini4j] [ini4j] 是一个简单的Java类库,用来读写Windows的ini配置...

    java开源包4

    Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作类库 [ini4j] [ini4j] 是一个简单的Java类库,用来读写Windows的ini配置...

    java爬虫汇总.docx

    Apache HttpClient:一个用于发送HTTP请求的Java库,可以用于获取网页内容。 JSoup:一个基于Java的JavaScript解析器,可以用于解析HTML文档。 WebMagic:一个开源的爬虫框架,提供了一些高级特性,如自动化抽取和...

    java开源包5

    Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作类库 [ini4j] [ini4j] 是一个简单的Java类库,用来读写Windows的ini配置...

    java开源包8

    Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作类库 [ini4j] [ini4j] 是一个简单的Java类库,用来读写Windows的ini配置...

    java通用API工具合集,最全中文版

    解压后直接点击index.html文件即可使用。

Global site tag (gtag.js) - Google Analytics