HtmlCleaner cleaner = new HtmlCleaner();     

      TagNode node = cleaner.clean(new URL("http://finance.sina.com.cn/money/nmetal/20091209/10157077895.shtml"));
//按tag取.
Object[] ns = node.getElementsByName("title", true); //标题 if(ns.length > 0) {
System.out.println("title="+((TagNode)ns[0]).getText());
}
// /html/body/div[2]/div[4]/div/div/div/div[2]/p
ns = node.evaluateXPath("//div[@class=\"blkContainerSblkCon\"]/p"); //选取class为指定blkContainerSblkCon的div下面的所有p标签
for (int i = 0; i < ns.length; i++) {
String in = cleaner.getInnerHtml((TagNode)ns[i]);
System.out.println("<p>"+in + "</p>");
}
String in = cleaner.getInnerHtml((TagNode)ns[0]);
System.out.println(in); System.out.println(((TagNode)ns[0]).getText());

  

   HtmlCleaner cleaner = new HtmlCleaner();
String url = "http://finance.sina.com.cn/nmetal/hjfx.html";
URL _url = new URL(url);
TagNode node = cleaner.clean(_url); //按tag取.
Object[] ns = node.getElementsByName("title", true); //标题 if(ns.length > 0) {
System.out.println("title="+((TagNode)ns[0]).getText());
} ns = node.evaluateXPath("//*[@class='Frame-Row3-01-C']/table[2]/tbody/tr/td/a"); //选取class为指定blkContainerSblkCon的div下面的所有p
for (int i = 0; i < ns.length; i++) { //取链接文本
// String in = cleaner.getInnerHtml((TagNode)ns[i]);
// System.out.println(in); //获取链接的
TagNode n = (TagNode) ns[i];
// System.out.println(n.getAttributeByName("href"));
System.out.println(new URL(_url,n.getAttributeByName("href")).toString());
}
// String in = cleaner.getInnerHtml((TagNode)ns[0]);
// System.out.println(in); // System.out.println(((TagNode)ns[0]).getText()); // System.out.println("ul/li:");
// //按xpath取
// ns = node.evaluateXPath("//div[@class='d_1']//li");
// for(Object on : ns) {
// TagNode n = (TagNode) on;
// System.out.println("\ttext="+n.getText());
// }
// System.out.println("a:");
// //按属性值取
// ns = node.getElementsByAttValue("name", "my_href", true, true);
// for(Object on : ns) {
// TagNode n = (TagNode) on;
// System.out.println("\thref="+n.getAttributeByName("href")+", text="+n.getText());
// }

本文转载于:http://gstarwd.iteye.com/blog/644502

xpath 参考教材:http://www.w3school.com.cn/xpath/xpath_syntax.asp

HtmlCleanner结合xpath用法(转载)的更多相关文章

  1. xPath 用法总结整理

    xPath 用法总结整理   一.xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML ...

  2. scrapy xpath用法

    一.实验环境 1.Windows7x64_SP1 2.anaconda3 + python3.7.3(anaconda集成,不需单独安装) 3.scrapy1.6.0 二.用法举例 1.开启scrap ...

  3. C# DataSet与DataTable的区别和用法 ---转载

    C# DataSet与DataTable的区别和用法 转载:https://www.cnblogs.com/liuyi-li/p/6340411.html DataSet是数据集,DataTable是 ...

  4. Xpath用法

    在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结构的,当然也能分析html结构), 利用其lxml.html的xpath对html进行分析 ...

  5. 移动端下拉刷新,iScroll.js用法(转载)

    本文转载自: iScroll.js 用法参考 (share)

  6. 扩展视图之xpath用法

    在视图扩展中,需要定位扩展字段需要显示的位置,通过xpath来实现定位 odoo 视图函数 在整个项目文件中,结构并不是十分明显,虽然它也遵循MVC设计,类比django的MTV模式,各个模块区分的十 ...

  7. ES6 Promise 用法转载

    Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方法,原型上有then.catch等同样很眼熟的方法. 那就new一个 var p = new Promise( ...

  8. Python re模块, xpath 用法

    1.re正则的用法总结 (1). ^ 表示以哪个字符为开头      eg:  '^g' 表示以g开头的字符串      . 表示任意字符 '^g.d'  表示以g开头第二个为任意字符,第三个为b的字 ...

  9. python---map 用法 [转载]

    map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 1.当seq只 ...

随机推荐

  1. TotoiseSVN + VisualSVN Server 使用

    1.SVN中  项目文件版本  分服务器的版本和本地的版本.服务器版本(SVN会自动给每个版本加版本号的)永远都是最新的. 2.svn的更新,在文件不冲突的时候,会自动将服务器的版本和本地的版本合并. ...

  2. CSS:百科

    ylbtech-CSS:百科 1.返回顶部 CSS (层叠样式表) 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标 ...

  3. js 正则替换的使用方法

    function compress(source) { const keys = {}; ⇽--- 存储目标key source.replace( /([^=&]+)=([^&]*)/ ...

  4. CSS标准的书写顺序

  5. 辞职信也要玩出高big

    辞职信尊敬的各位公司领导:值此用人之际,不期请辞,实属不敬.历经四季,余以凡才,承蒙殊待,幸受公司各位领导知遇之恩,得以与诸位贤达公事.时光荏苒,吾经竭力而为,以图报效,虽幸遇领导执手相教,然资质愚钝 ...

  6. java.lang.ThreadLocal的作用和原理?列举在哪些程序中见过ThreadLocal的使用?

    java.lang.ThreadLocal的作用和原理?列举在哪些程序中见过ThreadLocal的使用? 说明类java.lang.ThreadLocal的作用和原理.列举在哪些程序中见过Threa ...

  7. java idea 创建第一个java 程序

    我们在 src 目录下边创建一个 package. 然后在package下创建我们的程序  helloworld.java 代码: package com.api.com; public class ...

  8. react 使用触摸事件

    react开发支持的事件中,onClick事件,部分标签不支持点击,只能onTouchEnd,但是在移动端,手指触碰到事件绑定元素上,滑动,也会触发该事件,故来share解决办法,有更好的方法,欢迎评 ...

  9. loj2001[SDOI2017]树点染色

    题意:给你一棵树,一开始每个点上的颜色互不相同.三种操作:op1:x到根的路径上的点都染上一种新的颜色.op2:设一条路径的权值为val(x,y),求x到y路径的val.op3:询问x的子树中最大的到 ...

  10. [转]WPF的依赖属性是怎么节约内存的

    WPF升级了CLR的属性系统,加入了依赖属性和附加属性.依赖属性的使用有很多好处,其中有两点是我认为最为亮眼的: 1)节省内存的开销; 2)属性值可以通过Binding依赖于其它对象上,这就使得我的数 ...