使用xpath和php从html页面检索数据

时间:2014-07-07 09:01:49

标签: php xpath

我知道有类似的问题,但是,尝试学习PHP我遇到了这个错误,我想知道为什么会这样。

<?php
    $url = 'http://aice.anie.it/quotazione-lme-rame/';
    echo "hello!\r\n";
    $html = new DOMDocument();
    @$html->loadHTML($url);
    $xpath = new DOMXPath($html);
    $nodelist = $xpath->query(".//*[@id='table33']/tbody/tr[2]/td[3]/b");

    foreach ($nodelist as $n) {
        echo $n->nodeValue . "\n";
    }
?>

这打印只是&#34;你好!&#34;。我想打印用xpath提取的值,但最后一个echo不做任何事情。

1 个答案:

答案 0 :(得分:3)

您的代码中存在一些错误:

  1. 您尝试从网址http://aice.anie.it/quotazione-lme-rame/获取该表,但它实际位于位于http://www.aiceweb.it/it/frame_rame.asp的iframe中,因此请直接获取iframe网址。

  2. 您使用loadHTML()函数,它会加载 HTML字符串。你需要的是loadHTMLFile函数,它将HTML文档的链接作为参数(参见http://www.php.net/manual/fr/domdocument.loadhtmlfile.php

  3. 您认为页面上有 tbody 元素,但没有人。因此,请从查询过滤器中删除它。

  4. 工作代码:

    $url = 'http://www.aiceweb.it/it/frame_rame.asp';
    echo "hello!\r\n";
    $html = new DOMDocument();
    @$html->loadHTMLFile($url);
    $xpath = new DOMXPath($html);
    $nodelist = $xpath->query(".//*[@id='table33']/tr[2]/td[3]/b");
    
    foreach ($nodelist as $n) {
        echo $n->nodeValue . "\n";
    }