Не могу выбрать ссылку

Я пытаюсь очистить каждую строку .row. В конечном счете, я бы хотел щелкнуть ссылку и получить доступ к DOM, на который он ссылается, но я не могу получить ни объект Link, ни атрибут href.

Не уверен, что проблема в том, что атрибуты a не содержат текста, но это DOM, с которым мне приходится работать.

Помогите?

<?php require 'vendor/autoload.php';

use Symfony\Component\DomCrawler\Crawler;

$html = <<<'HTML'
<!doctype html>
<html>
<body>
<div class="content">
<p class="row"><a href="/uri1"></a></p>
<p class="row"><a href="/uri2"></a></p>
<p class="row"><a href="/uri3"></a></p>
</div>
</body>
<html>
HTML;

$dom = new Crawler($html);

$content = $dom->filter('.row');
$rows = [];

foreach ($content as $element)
{
$node = new Crawler($element);
$link = $node->filter('a');
echo $link->html(); // Empty?

try
{
$link = $node->selectLink('')->link();
echo $link->getUri();
}
catch (Exception $ex)
{
// Throws: Current URI must be an absolute URL ("").Current URI must be
// an absolute URL ("").Current URI must be an absolute URL ("").
echo $ex->getMessage();
}

}

0

Решение

Я использую xpath для фильтрации элементов DOM с помощью DomCrawler, потому что мне нравится, что у меня больше контроля над тем, что я фильтрую. Приведенный ниже код должен отображать URL в вашем html.

$crawler = new Crawler($html);

$crawler->filterXPath("//p[@class='row']")->each(function (Crawler $node, $i) {

$url = $node->filterXPath("//a/@href")->text();
echo $url;

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]