Получение ссылок с использованием xpath в php - PullRequest
2 голосов
/ 24 сентября 2010

Я пытаюсь получить ссылки со страницы поиска Google. Я использую ниже Xpath к

//div[@id='ires']/ol[@id='rso']/li/h3/a/@href

захватить ссылки. xPather оценивает его и выдает результат. Но когда я использую его с моим php, он не показывает никакого результата. Может кто-нибудь сказать, пожалуйста, что я делаю не так? С CURL все в порядке.

ниже мой код

$dom = new DOMDocument();
@$dom->loadHTML($result);

$xpath=new DOMXPath($dom);
$elements = $xpath->evaluate("//div[@id='ires']/ol[@id='rso']/li/h3/a");

foreach ($elements as $element)
{
   $link  = $element->getElementsByTagName("href")->item(0)->nodeValue;

   echo $link."<br>";
}

Пример HTML, предоставленный Робертом Питтом

<li class="g w0">
    <h3 class="r">
       <a href="" class="l"><em>LINK</em></a>
    </h3>
    <button class="ws" title=""></button>
    <div class="s">
        META
    </div>
</li>

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010

Вы можете упростить жизнь, используя оригинальное выражение XPath, которое вы цитировали:

//div[@id='ires']/ol[@id='rso']/li/h3/a/@href

Затем выполните цикл по соответствующим атрибутам:

$hrefs = $xpath->evaluate(...);
foreach ($hrefs as $href) {
    echo $href->value . "<br>";
}

Убедитесь, чтолюбые атрибуты совпадают (var_dump($hrefs->length) будет достаточно).

0 голосов
/ 24 сентября 2010

ты пробовал

$element->getElementsByTagName("a")

вместо

$element->getElementsByTagName("href")
0 голосов
/ 24 сентября 2010

Нет элемента с именем href, это атрибут:

$link  = $element->getElementsByTagName("href")->item(0)->nodeValue;

Вы можете просто использовать

$link  = $element->getAttribute('href');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...