无法使用DOM Xpath进行定位

时间:2014-06-08 02:50:10

标签: php dom xpath

我知道这里有很多关于使用XPATH进行DOM遍历的问题。在我提出问题之前,我做了大量的研究,但我仍然遇到了问题。我试图在Android市场上提取给定应用程序的下载次数。因此,例如,如果应用程序是堆栈交换应用程序,我想从这个页面中提取数字:50,000 - 100,000:

https://play.google.com/store/apps/details?id=com.stackexchange.marvin

我试图用一个" numDownloads"的迭代来定位div。无济于事。我没有遇到我尝试过的页面上的其他项目(各种类等),但这个特定的项目永远不会返回结果。我已经检查过以确保该值实际上是在源中而不是由JS插入。这是我的代码:

        // Load up the document so we can parse the dom
    $dom = new DomDocument();
    $dom->loadHTML($this->html);

    // XPath so we can do some specific searches
    $finder = new DomXPath($dom);

    // Find all the number of downloads item on page
    $installs = $finder->query("//*[@itemprop='numDownloads']");
    echo "<pre>"; var_dump($installs); echo "</pre>";

    foreach($installs as $install) {
        echo "<pre>"; var_dump($install->nodeValue); echo "</pre>";
    }

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

实际上你已经走在正确的轨道上了。

$url = 'https://play.google.com/store/apps/details?id=com.stackexchange.marvin';
$contents = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($contents);
$finder = new DomXPath($dom);
$installs = $finder->query("//div[@itemprop='numDownloads']");
// directly point it to a div since it is a div
foreach($installs as $install) {
    echo $install->nodeValue; // 50,000 - 100,000
}