Проблема с curl, запросом xpath - PullRequest
0 голосов
/ 14 января 2011

Мне нужна помощь с моим запросом xpath. Я могу заставить этот код работать практически со всеми сайтами, которые мне нужно почистить, кроме этой небольшой части определенного сайта ... Я просто получаю пустую страницу ... У кого-нибудь есть идеи, как мне лучше это сделать? 1001 *

//
$target_url = "http://www.teambuy.ca/vancouver/";
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';

// make the cURL request to $target_url
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT,$userAgent);
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$html= curl_exec($ch);
if (!$html) {
    echo "<br />cURL error number:" .curl_errno($ch);
    echo "<br />cURL error:" . curl_error($ch);
    exit;
}

// parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($html);

// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body/div[@id='pagewrap']/div[@id='content']/div[@id='bottomSection']/div[@id='bottomRight']/div[@id='sideDeal']/div[2]/div/a/center/span");

foreach ($hrefs as $e) {
    $e->nodeValue;
}
$insert = $e->nodeValue;
echo "$insert";

- EDIT -

Не повезло ... Неустранимая ошибка: вызов функции-члена loadHTMLfile () для необъекта в ... Строка 4 //

$xpath_query = $dom->loadHTMLfile("http://www.teambuy.ca/vancouver/");

$hrefs = $xpath_query->evaluate("/html/body/div[7]/div[4]/div[3]/div[2]/div[1]/div[2]/div/a/center/span");

foreach ($hrefs as $e) {
    echo $e->nodeValue;
}
$insert = $e->nodeValue;

echo "$insert";

1 Ответ

0 голосов
/ 14 января 2011

не используйте cURL.просто используйте

$dom->loadHTMLFile("http://www.teambuy.ca/calgary/");

не используйте

$xpath = new DOMXPath($dom);

просто используйте

$href = $dom->xpath($xpath_query);

Я думаю, ваш запрос xpath также может быть упрощен ...

также,

foreach ($hrefs as $e) {
    $e->nodeValue;
}

ничего не делает.Возможно, вы захотите попробовать это вместо этого.

foreach ($hrefs as $e) {
    echo $e->nodeValue;
}
...