HtmlCleanner结合xpath用法(转载)

   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

时间: 2024-10-08 15:06:02

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

elasticsearch的基本用法(转载)

最大的特点:  1. 数据库的 database, 就是  index  2. 数据库的 table,  就是 tag  3. 不要使用browser, 使用curl来进行客户端操作.  否则会出现 java heap ooxx... curl:  -X 后面跟 RESTful :  GET, POST ...  -d 后面跟数据. (d = data to send) 1. create: 指定 ID 来建立新记录. (貌似PUT, POST都可以)  $ curl -XPOST localh

mysql中count,GROUP BY的用法(转载)

计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物有一个记录.COUNT(*)函数计算行数,所以计算动物数目的查询应为: mysql> SELECT COUNT(*) FROM pet;+----------+| COUNT(*) |+----------+|        9 |+----------+在前面,你检索了拥有宠物的人的名字.如果你想要知道每个主人有多少宠物,你可以使用COUNT( )函数: mysql> SELECT owner, COUNT(*) F

AndroidDrawable那些不为人知的高效用法(转载)

AndroidDrawable那些不为人知的高效用法 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43752383,本文出自:[张鸿洋的博客] 1.概述 Drawable在我们平时的开发中,基本都会用到,而且给大家非常的有用.那么什么是Drawable呢?能够在canvas上绘制的一个玩意,而且相比于View,并不需要去考虑measure.layout,仅仅只要去考虑如何draw(canavs).当然了,对于Drawable

xPath 用法总结整理

xPath 用法总结整理 一.xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML 文档中进行导航 XPath 包含一个标准函数库 XPath 是 XSLT 中的主要元素 XPath 是一个 W3C 标准 节点 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的. 二.xpath语法 表达式 描述 no

linux—sed 用法-转载

linux中sed的用法 sed命令行格式为:         sed [-nefri]  'command'  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来        -e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑       

Xpath用法

在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结构的,当然也能分析html结构), 利用其lxml.html的xpath对html进行分析,获取抓取信息;以下是关于xpath的一些基本用法: 在介绍XPath的匹配规则之前,我们先来看一些有关XPath的基本概念.首先要说的是XPath数据类型.XPath可分为四种数据类型: 节点集(node-set) 节点集是通过路径匹配返回的符合条件的一组节点的集合.其它类型的数据不能转换为节点集

SQL中CASE 的用法 转载

sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.              例如,下面的语句显示中文年月 select getdate() as 日期,case month(getdate()) when 11 then '十一' when 12 then '十二' else substring('一二三四五六七八九十', month(getdate()),1) end+'月' as 月份 ===================

Python re模块, xpath 用法

1.re正则的用法总结 (1). ^ 表示以哪个字符为开头      eg:  '^g' 表示以g开头的字符串      . 表示任意字符 '^g.d'  表示以g开头第二个为任意字符,第三个为b的字符串  *表示  某个字符出现任意多次 import re line = 'bobby123' regex_str = '^b.*' #以b开头的任意字符串出现任意多次 ^以什么开头 .任何字符 *出现任意多次 if re.match(regex_str,line): print('yes') (2

Java中Timer的用法--转载之网络

用法很简单,new一个timer,然后写一个timertask的子类即可. import java.util.Timer; import java.util.TimerTask; public class M { public static void main(String[] args) { // TODO todo.generated by zoer Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 2000); }