Fatal error: Uncaught Error: Call to a member function find() PHP simple_html_dom_parser

Fatal error: Uncaught Error: Call to a member function find() PHP simple_html_dom_parser

我只想获取span的值

这是我的代码:

 <?php
        include('simple_html_dom.php');
        
        $html = file_get_html('https://ru.investing.com/commodities/gold');
        
        echo $html->find("span[class=arial_26 inlineblock pid-8830-last]",0)->plaintext;
        ?>

那是我的错误:

Fatal error: Uncaught Error: Call to a member function find() on bool in /home/f0514538/domains/f0514538.xsph.ru/public_html/test/crypto/tovar/gold.php:6 Stack trace: #0 {main} thrown in /home/f0514458/domains/f0514458.xsph.ru/public_html/test/crypto/tovar/gold.php on line 6
 

$html 变量包含一个 boolean false 而不是您期望的 HTML 对象。您可以通过添加

来调试它
var_dump($html);

$html 为空的原因是您尝试下载的网站有一些保护措施,没有有效的用户代理不允许下载。

最简单的解决方法是手动设置用户代理,

ini_set('user_agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36');

所以整个代码变成了

include('simple_html_dom.php');
ini_set('user_agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36');
$html = file_get_html('https://ru.investing.com/commodities/gold');
echo $html->find("span[class=arial_26 inlineblock pid-8830-last]", 0)->plaintext;

请确保您在未经同意的情况下抓取内容不会违反网站条款和条件。