致命错误:未捕获的错误:调用成员函数 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”