php - 有问题使用DOMXPath从多个嵌套表和div中提取链接信息

时间:2013-10-07 05:35:50

标签: php dom xpath html-parsing

我正在尝试从多个嵌套表结构中提取特定的链接属性。文档格式是旧的,这可以解释使用table元素来设计页面的过程。

以下是我尝试使用DOMXPath解析的相关文档:: 每个宽度为100%的表具有相同级别的嵌套子级,即tbody,tr,td,a,div等。

<table width="1000px">
    <tbody>
        <tr></tr>
        <tr>
            <td>
                <br>
                <span></span>
                <span></span>
                <div></div>
                <div>
                    <div></div>
                    <div>
                        <center></center>
                        <hr>
                        <table width="100%"></table>
                        <table width="100%">
                            <tbody>
                                <tr>
                                    <td>
                                        <a name="A"></a>
                                        <div style="width: 230px;">
                                            <a href="owlbook/manufacturer.aspx?manufacturerId=124">Owl Chant Book</a>
                                            <br>
                                        </div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                        <table width="100%"></table>
                    </div>
                </div>
            </td>
        </tr>
    </tbody>
</table>

这是我用来解析它的代码。我试图得到href的值和嵌套在div内深处的锚的textValue。

public function parseManufacturerNodes($results) {
    error_reporting(0);
    $this->dom = new DOMDocument();
    $this->dom->loadHTML($results);

    $this->domQuery = new DOMXPath($this->dom);
    $this->nodes = $this->domQuery->query("//table/tbody/tr/td/div/div/div/div/table/tbody/tr/td/div");
    var_dump($this->nodes);
    foreach ($this->nodes as $this->eachNodes) {
        echo $this->eachNodes;
    }
    error_reporting(1);

}

这根本不起作用。我已经尝试更改查询参数以匹配文档结构,没有任何效果。 var_dump返回。

object(DOMNodeList)#44 (1) { ["length"]=> int(0) }

如何从内表中每个宽度为100%的div中提取锚属性。在这种情况下会返回href =“owlbook / manufacturer.aspx?manufacturerId = 124”和textValue = Owl Chant Book

请提供任何形式的帮助,因为我认为我在找到可行的解决方案方面没有取得任何进展。

谢谢, MAXX

0 个答案:

没有答案