2015-07-09 1 views
0

Я пытаюсь прочитать содержимое веб-сайта, используя cURL для сравнения некоторых данных. Я выполнил, чтобы получить содержимое веб-страницы с помощью cURL, но когда я хочу извлечь некоторые данные из контента, он не работает. Я анализирую контент с помощью DOMDocument, но кажется, что персонажи, такие как & и т. Д. И т. Д., Не превращаются в хороший способ, поэтому он падает. поэтому я помещаю htmlentities с ним, но это также не работает.Как анализировать содержимое веб-сайта, полученное с сайта с помощью curl

Это одна из ошибок, которые я получаю: Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' в Entity, строка: 37 в URL-адрес по строке 40

Может ли кто-нибудь предложить мне, что я должен делать по-другому?

Это, как я получаю содержание веб-сайта: функция get_web_page ($ URL) { $ user_agent = 'Mozilla/5.0 (Windows NT 6.1; с.в.: 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 ("URL веб-сайта");

И так я должен разбираться в нем: $ 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 с классом, только это значение вы знаете, как я могу получить это?

+0

Можете ли вы изменить свой пост, чтобы включить код, который вы используете, чтобы выполнить синтаксический разбор? Вышеупомянутая ошибка звучит для меня так, как HTML-документ искажен; убедитесь, что объект в указанном местоположении действительно имеет точку с запятой, завершающую его. Библиотеке сложно анализировать документ, если он не сформирован. –

+0

@ DanielWaghorn Я добавил код – Jantje

ответ