简单的html dom解析器无法获得正确的值

时间:2015-05-10 11:19:19

标签: php web-scraping simple-html-dom

我使用simple html dom parser

进行搜索
include 'simple_html_dom.php';

function getSslPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

$html = getSslPage('http://forum.xda-developers.com/note-4-sprint');

$result = $html->find('.forumbox-header',0); //error here

echo $result;

我execpt的输出将是Sprint三星Galaxy Note 4,它有一类forumbox-header。我不知道我在那里说Fatal error: Call to a member function find() on a non-object时出错了。

1 个答案:

答案 0 :(得分:0)

您的getSslPage函数返回string($ url页面的html源代码)。

虽然返回的值是一个字符串,但您将其视为一个对象$html->find,因此会将其视为错误。

  

致命错误:在非对象上调用成员函数find()

Simple Html DOM Parser库有2个函数来创建DOM对象:

  • file_get_html - 从URL
  • 创建DOM对象
  • str_get_html - 从字符串
  • 创建DOM对象

由于您已经拥有HTML字符串,因此只需按以下步骤编辑代码:

$html = str_get_html($html);
$result = $html->find('.forumbox-header',0);