Опираясь на ответ Паскаля Мартина ...
Я использую комбинацию CURL и XPATH. Ниже приведена функция, которую я использую в одном из моих классов.
protected function _get_xpath($url) {
$refferer='http://www.whatever.com/';
$useragent='Googlebot/2.1 (http://www.googlebot.com/bot.html)';
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt ($ch, CURLOPT_REFERER, $refferer);
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// $output contains the output string
$output = curl_exec($ch);
//echo htmlentities($output);
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
else {
$dom = new DOMDocument();
@$dom->loadHTML($output);
$this->xpath = new DOMXPath($dom);
$this->html = $output;
}
// close curl resource to free up system resources
curl_close($ch);
}
Вы можете разобрать структуру документа с помощью evaluate и извлекать информацию, которую вы хотите
$resultDom = $this->xpath->evaluate("//span[@id='headerResults']/strong");
$this->results = $resultDom->item(0)->nodeValue;
Ну, как кто-то должен разбирать * чужой * код, совершенно не относящийся к уважению веб-стандартов не :-) – Joey
@Johannes> really ;; но если вы попытаетесь разобрать людей других людей, есть вероятность, что вам придется создавать HTML тоже, день или другой ... И в тот день, вспомнив о трудностях, с которыми вы столкнулись crappy-HTML, может побудить вас писать чистые HTML-файлы (вскользь ...) –