`
gcgmh
  • 浏览: 358716 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nekohtml的2个小例子

阅读更多
//获取网页里面的keywords和description
	public static void main(String[] argv) throws Exception {
		
		BufferedReader in = new BufferedReader(new FileReader("d:/163.html"));
		DOMParser parser = new DOMParser();
		 parser.setProperty(
			     "http://cyberneko.org/html/properties/default-encoding",
			     "gb2312");
		parser.parse(new InputSource(in));
		
		Document doc = parser.getDocument();
		NodeList list = doc.getElementsByTagName("META");
		for(int i = 0, n = list.getLength(); i < n ; i++){
			Element e = (Element) list.item(i);
			if(e.getAttribute("name").equalsIgnoreCase("keywords")){
				String keywords = e.getAttribute("content");
				System.out.println("keywords: " + keywords);
			}
			if(e.getAttribute("name").equalsIgnoreCase("description")){
				String description = e.getAttribute("content");
				System.out.println(description);
			}
		}
	} 

==========================================================================
//2、test使用DOMFragmentParser,提取所有正文,由于没有过滤一些没用的标签,所以会有没用的信息打印,这个可以再事先过滤一下。

	public static void main(String[] argv) throws Exception {
		DOMFragmentParser parser = new DOMFragmentParser();
		HTMLDocument document = new HTMLDocumentImpl();
		DocumentFragment fragment = document.createDocumentFragment();
		parser.parse("http://sports.sina.com.cn/f1/2009-09-21/20104599271.shtml", fragment);
		print(fragment, "");
	} 

	/** Prints a node's class name. */
	public static void print(Node node, String indent) {
		
//		System.out.println(indent + node.getClass().getName());
//		System.out.println(node.getNodeType());
		
		if (node.getNodeType() == Node.TEXT_NODE) {
			System.out.println(indent + node.getNodeValue());
		}
		Node child = node.getFirstChild();
		while (child != null) {
			print(child, indent + " ");
			child = child.getNextSibling();
		}
	} 

} 
分享到:
评论

相关推荐

    html解析例子,用nekohtml写的

    这里我们关注的是一个使用NekoHTML进行HTML解析的例子。NekoHTML是一个Java库,它为了解析和构建XML和HTML文档提供了便利。这个库特别有用,因为HTML经常存在不合规的情况,而NekoHTML能帮助开发者在这样的环境中...

    Java解析HTML之NekoHTML

    在这个例子中,`TagNameFilter`是内置的过滤器,用于筛选指定标签名的节点。运行这个程序,它将打印出所有`&lt;a&gt;`标签的`href`属性。 NekoHTML虽然在处理HTML解析方面表现出色,但它并不支持CSS选择器,对于复杂的...

    NekoHTML学习笔记.doc

    NekoHTML是一个由J. Andrew Clark编写的Java库,它主要功能是对HTML文档进行解析,以便以标准的XML接口访问其内容。NekoHTML能够处理HTML文档中的常见错误,如缺失的父元素、未闭合的标签和不匹配的嵌套元素。它使用...

    Java编写多个爬虫实例

    nekohtml-1.9.7 nekohtml的源码项目 RhinoTest 测试js解析 ExtractContext 内容抽取示例 SearchChinesePdf 包含对PDF文件的处理 parse-rtf 包含对RTF文件的处理 SearchWord 包含对Word和EXCEL、PPT文件的处理 ...

    java浏览器

    Java浏览器是一种基于Java编程语言...通过这个Java小例子,学习者不仅可以深化Java编程技能,还能了解到网络编程和GUI设计的基本原理。同时,这样的项目也鼓励开发者实践和理解Web浏览器的工作原理,提升问题解决能力。

    htmlunit依赖的所有jar

    这个例子展示了如何启动一个HtmlUnitDriver,导航到一个网页,并打印出页面标题。 请注意,具体的JAR文件版本可能会随着HTMLUnit的更新而变化,因此在实际使用时,最好参考HTMLUnit的官方文档或最新的Maven依赖来...

    jaxen-1.1-beta-7.zip

    在这个例子中,`DOMXPath` 是Jaxen的一个实现,它使用DOM作为其底层的XML模型。`//element` 是一个XPath表达式,选取了所有名为 `element` 的元素。通过 `selectNodes()` 方法,我们可以得到这些元素的列表,并进行...

Global site tag (gtag.js) - Google Analytics