Я пытаюсь прочитать содержимое веб-сайта, используя 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 с классом, только это значение вы знаете, как я могу получить это?
Можете ли вы изменить свой пост, чтобы включить код, который вы используете, чтобы выполнить синтаксический разбор? Вышеупомянутая ошибка звучит для меня так, как HTML-документ искажен; убедитесь, что объект в указанном местоположении действительно имеет точку с запятой, завершающую его. Библиотеке сложно анализировать документ, если он не сформирован. –
@ DanielWaghorn Я добавил код – Jantje