我现在有一点html代码, <tr bgcolor="#f1f5fa">
                  <td nowrap class="smalltext">May 2010</td>
                  <td class="smalltext">United Kingdom</td>
                  <td class="smalltext">
                            
                                    <a href="/WebObjects/iTunesConnect.woa/wo/3.0.0.5.1.7.1.1.2.15.0.5.1">
                                        80075911_0510_GB_PYMT.txt
                                    </a>
                            
                            
                  </td>
                </tr>
            
                <tr bgcolor="#f1f5fa">
                  <td nowrap class="smalltext">May 2010</td>
                  <td class="smalltext">United Kingdom</td>
                  <td class="smalltext">
                            
                                    <a href="/WebObjects/iTunesConnect.woa/wo/3.0.0.5.1.7.1.1.2.15.1.5.1">
                                        80075911_0510_GB.txt
                                    </a>
                            
                            
                  </td>
                </tr>我要用“May 2010”这个关键词分别抓里面<a href="/>超链接地址。谁能帮我看看,谢了!

解决方案 »

  1.   

    先匹配may 2010 ,然后通过标签去找url
      

  2.   

    没说一样,这个我知道,我就是想问用htmlparser怎么去匹配may 2010,然后再去找url!
      

  3.   

    要先匹配出这个table 然后去匹配trSS就是一个字符串,格式大概是这样的
    String ss = "<table>
    <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    </tr>
    </table>" myParser = Parser.createParser(ss, "GBK");
            NodeFilter tableFilter = new NodeClassFilter(TableTag.class);
            OrFilter lastFilter = new OrFilter();
            lastFilter.setPredicates(new NodeFilter[] { tableFilter });
            try 
            {
                nodeList = myParser.parse(lastFilter);
                for (int i = 0; i <= nodeList.size(); i++) 
                {
                    if (nodeList.elementAt(i) instanceof TableTag)
                    {
                        TableTag tag = (TableTag) nodeList.elementAt(i);
                        TableRow[] rows = tag.getRows();
                
                        for (int j = 1; j < rows.length; j++) 
                        {
                            TableRow tr = (TableRow) rows[j];
                            TableColumn[] td = tr.getColumns();
                            System.out.println(td.length);
                           for (int k = 0; k < td.length; k++) 
                            {
                                System.out.println(td[k].toPlainTextString());
                           }                
                        }
                
                    }
                }
        
            } catch (ParserException e) 
            {
                e.printStackTrace();
            }
        }
      

  4.   

    你这个是抓table里面所有text文本,我要是的里面<a href="" />,两码事,你自己看看你你的例子里面打个超链接,你的System.out.println(td[k].toPlainTextString());还打印的出来<a herf>的东西吗
      

  5.   

    而且还有一个问题,我要是页面好几个table呢,而且我这些table里面没有特殊的标识
      

  6.   

    这个好像没有办法直接获得.!
    由你这个现有的资料, 目前只能过滤td,获取td的文本和你要的进行比较, 如果满足条件就获得父节点,
    这时有两种情况:
    1.如果你含有<a>的所有tr就是一行三列的话, 直接拿父节点getChild(index)获得节点,然后转成LinkTag获取href属性.!
    2.如果列不固定,那么你就要遍历了.! 遍历中去判断!
      

  7.   

    格式是固定的,都会是 <tr bgcolor="#f1f5fa">
                      <td nowrap class="smalltext">May 2010</td>
                      <td class="smalltext">United Kingdom</td>
                      <td class="smalltext">
                                
                                        <a href="/WebObjects/iTunesConnect.woa/wo/3.0.0.5.1.7.1.1.2.15.0.5.1">
                                            80075911_0510_GB_PYMT.txt
                                        </a>
                                
                                
                      </td>
                    </tr>
    这个样子的,我就是现在知道是May 2010 把它里面的<a> url拿到。照上面那哥们说的 要先匹配出这个table 然后去匹配tr 那方法,我试了试,也很难能拿到url链接
      

  8.   

    这个不需要匹配任何,你只需要匹配td就可以了.!你匹配到tr还麻烦些, 那你还要循环遍历你的tr里面是否有一个td的text为May 2010? 这样做比直接过滤td多走了多少弯路?