致命错误:未捕获的错误:调用成员函数 find() PHP simple_html_dom_parser [重复]

Posted

技术标签:

【中文标题】致命错误:未捕获的错误:调用成员函数 find() PHP simple_html_dom_parser [重复]【英文标题】:Fatal error: Uncaught Error: Call to a member function find() PHP simple_html_dom_parser [duplicate] 【发布时间】:2021-08-18 02:49:13 【问题描述】:

我只想得到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
 

【问题讨论】:

【参考方案1】:

$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;

请确保您没有在未经同意的情况下抓取内容而违反网站 T&C。

【讨论】:

谢谢兄弟,这是工作,我明白为什么会发生这个错误 很高兴这有帮助。如果答案正确,请将其标记为正确答案,以帮助日后遇到类似问题的人快速找出正确的解决方案。

以上是关于致命错误:未捕获的错误:调用成员函数 find() PHP simple_html_dom_parser [重复]的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:未捕获的错误:在 null 上调用成员函数 select()

致命错误:未捕获的错误:调用 bool 上的成员函数 execute() [重复]

致命错误:未捕获错误:在null上调用成员函数select()

PHP“致命错误:未捕获错误:调用成员函数prepare()为null”

PHP:致命错误:未捕获的错误:在布尔值上调用成员函数 execute() [重复]

PHP 致命错误:未捕获的错误:调用字符串中的成员函数 diff()