首页 > 解决方案 > 简单的 Html Dom 抓取页面的一半

问题描述

我正在尝试使用 simple-html-dom 抓取此网址https://nrg91.gr/nrg-airplay-chart/,但它似乎没有获得完整的 html 源代码。这段代码:

        include_once('simple_html_dom.php');
        $html = file_get_html('https://nrg91.gr/nrg-airplay-chart');

        echo $html->plaintext;

显示内容直到 h1,就在我之后的内容之前。从 simple-html-dom 手动示例中,这应该显示来自该 url 的所有链接:

        foreach($html->find('a') as $e) 
        echo $e->href . '<br>';

但它只显示到主导航菜单的链接,而不是来自主体或页脚的链接。

我还尝试使用 prerender.com,在将 url 传递给 file_get_html 之前完全加载它,但结果是一样的。我究竟做错了什么?

标签: phpweb-scrapingsimple-html-dom

解决方案


那个库看起来已经 7 年没有更新过了。我总是推荐使用PHP 的内置函数

$url = "https://nrg91.gr/nrg-airplay-chart/";
$dom = new DomDocument();
libxml_use_internal_errors(true);
$dom->load($url);
foreach($dom->getElementsByTagName("a") as $e) {
    echo $e->getAttribute("href") . "\n";
}

推荐阅读