将HTML表解析为Groovy列表?

时间:2016-05-08 15:46:01

标签: html xpath groovy

我想解析HTML页面并获取表值。例如,解析它以获取字典列表。每个列表元素都是对应于表中行的字典。

我们说这个表是:

表格

<table style="width:100%">
  <tr>
    <td>Jill</td>
    <td>Smith</td>      
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td>        
    <td>94</td>
  </tr>
</table>

结果

[Jill,  Smith,  50]
[Eve,   Jackson,    94]

我通过两种方式实现这一目标:

  1. 使用Xpath:

    page.body.div.table.tr.time;
    
  2. 使用这样的闭包:

    page."**".findAll { it.@class.toString().contains("time")}.each {
    
  3. 两种方式都使用XMLSlurper:

    @Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='1.2')
    def parser = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser())
    

    还有另一种使用groovy

    获取表值的方法

    感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我使用jsoup HTML解析器取得了不错的效果。它是一个java库,但与Groovy配合得很好。以下是parsing a table in Java的示例,以及使用Groovy和jsoup进行抓取的有用blog entry。这个question在解析表时有一个很巧妙的例子。