如何使用curl

时间:2015-07-09 08:00:42

标签: php parsing curl domdocument

我正在尝试使用cURL来阅读网站的内容来比较一些数据。我完成了用cURL接收网页的内容,但是当我想从内容中提取一些数据时,它无法正常工作。我用DOMDocument解析内容,但似乎像&和€等等没有得到很好的转换,所以它崩溃了。这就是为什么我把它与htmlentities,但这也不起作用。

这是我收到的错误之一:      警告:DOMDocument :: loadHTML()[domdocument.loadhtml]:htmlParseEntityRef:expecting';'在实体中,第40行的URL中的第37行

有人能建议我应该做些什么吗?

这就是我获取网站内容的方式: function get_web_page($ url) {     $ user_agent ='Mozilla / 5.0(Windows NT 6.1; rv:8.0)Gecko / 20100101 Firefox / 8.0';

$options = array(
    CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
    CURLOPT_POST           =>false,        //set to GET
    CURLOPT_USERAGENT      => $user_agent, //set user agent
    CURLOPT_COOKIEFILE     =>"cookie.txt", //set cookie file
    CURLOPT_COOKIEJAR      =>"cookie.txt", //set cookie jar
    CURLOPT_RETURNTRANSFER => true,     // return web page
    CURLOPT_HEADER         => false,    // don't return headers
    CURLOPT_FOLLOWLOCATION => false,     // follow redirects
    CURLOPT_ENCODING       => "",       // handle all encodings
    CURLOPT_AUTOREFERER    => true,     // set referer on redirect
    CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
    CURLOPT_TIMEOUT        => 120,      // timeout on response
    CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
);

$ch      = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err     = curl_errno( $ch );
$errmsg  = curl_error( $ch );
$header  = curl_getinfo( $ch );
curl_close( $ch );

$header['errno']   = $err;
$header['errmsg']  = $errmsg;
$header['content'] = $content;
return $header;

}

$ html = get_web_page(“网站的网址”);

这就是我应该如何解析它:     $ dom = new DOMDocument;     $ dom-> loadHTML(mb_convert_encoding($ html [“content”],'HTML-ENTITIES','UTF-8'));

foreach($dom->getElementsByTagName('div') as $div){
    echo $div->nodeValue."<br>";
}

但实际上我正在寻找一个特定div与一个类的值,只有那个值你知道我怎么能得到它吗?

1 个答案:

答案 0 :(得分:0)

我使用SimpleHTMLDom,这很容易documented

您甚至可以在StackOverflow

中找到一堆问题