我有一个很奇怪的问题,只发生在我的本地XAMPP安装上。我有一个脚本使用curl从页面中提取数据,然后将其打开为googlebot,然后使用simple_html_dom中的str_get_html()
提取DOM元素。
我收到以下错误:
Fatal error: Call to a member function find() on a non-object in C:\xampp\htdocs\scraper\facebook.php on line 49
我的函数的顶部部分(此函数很长,所以不会发布所有内容,只会发布错误):
function get_facebook_data($link)
{
$username = "";
$title = "";
$location = "";
$email = "";
$description = "";
$userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)';
$url = get_facebook_page($link);
// THE ABOVE VARIABLE IS A VALID URL IF I ECHO IT WILL GIVE: http://www.facebook.com/pages/The-Pencil-Test/179417698765073?id=179417698765073&sk=info BEFORE GIVING THE ERROR
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
$html = curl_exec($ch);
$cache = $html;
$html2 = str_get_html($cache);
$data = $html2->find("span.uiButtonText");
//THE LINE ABOVE IS THROWING THE ERROR
我的脚本在一个在线环境中工作得很好,这让我相信它是一个xampp问题,通过本地运行的curl出现问题。我在xampp中启用了curl
,并且在phpinfo()中显示为已启用;它可能与我的防火墙有关吗?
任何帮助非常感谢, 西蒙
100%是curl没有在本地运行,使用curl和simple_html_dom在XAMPP中的非对象上更改标题:find()