如何从表中提取数据没有样式/类/ ID信息

时间:2012-02-11 22:31:48

标签: php parsing dom xpath

我想解析特定的表以进行报废。表的代码如下:

<table class="NormalText" cellspacing="1" cellpadding="2" width="100%" border="0"
    bgcolor="#eeeeee">
    <tr>
        <td width="108" align="center">
            Stock No.
        </td>
        <td width="108" align="center">
            <span id="invModule_grid_row18_lblMileage">Mileage</span>
        </td>
        <td width="108" align="center">

            Color
        </td>
        <td width="76" align="center">
            Interior
        </td>
        <td width="104" align="center">
            Transmission
        </td>
        <td width="110" align="center">
            Engine
        </td>

    </tr>
    <tr>
        <td width="108" align="center">
            1204
        </td>
        <td width="108" align="center">
            161,328
        </td>
        <td width="108" align="center">
            Tan
        </td>

        <td width="76" align="center">
            Leather   
        </td>
        <td width="104" align="center">
            Automatic
        </td>
        <td width="110" align="center">
            3.5L V6 DOHC 16V
        </td>
    </tr>

    <tr>
        <td colspan="7" height="7">
        </td>
    </tr>
</table>

我想要的输出是

  

1194 56,200 Blue Vinyl 5 Speed 6.8L V10 SOHC 30V

问题

  • 哪种解析技术/解析器最适合这个? PHPQuery,simplehtmlparse还是xpath?
  • 我对domDocument,xpath和php比较熟悉,可以用xPath完成吗?
  • 如果是,xPath会是什么? (我很困惑,因为我的所需数据是在td中,td标签没有附加id或类信息。另外,在uper行上,基本上是标题行,td也是如此)

  • 请指导我

  • 1 个答案:

    答案 0 :(得分:2)

    的XPath

    以下示例选择表中表行中所有td节点的文本:

    //table/tr[position()>1]/td/text()
    

    如果页面上有其他表格,您将必须知道两件事之一:

    获取最后一个表:

    //table[last()]/tr[position()>1]/td/text()
    

    获取第三个表:

    //table[2]/tr[position()>1]/td/text()
    

    获取基于属性的表,在本例中为class =“NormalText”:

    //table[@class='NormalText']/tr[position()>1]/td/text()