CSS-селекторы для разбора HTML в переполнении стека

Раньше я использовал jsoup для разбора HTML в Java. Он может выбрать и разобрать практически все. Недавно я переключился на PHP и попробовал несколько парсеров DOM, но селекторы css работают не так, как ожидалось (или не так хорошо, как jsoup). Например, я попытался выбрать Около (в верхнем левом углу) ссылка Googleдомашняя страница с использованием:

1. DOMCrawler — Symfony:

$crawler->filter('#hptl > a:nth-child(1)')->each(function ($node) {
print $node->text()."\n";
});
Result: Empty Page

2. Простой HTML DOM:

require "simple_html_dom.php";

// Create DOM from URL or file
$html = file_get_html("https://google.com");

// Find innertext of about
foreach($html->find("#hptl > a:nth-child(1)") as $element) {
echo $element->innertext . "<br>";
}
Result: Empty Page

3. phpQuery:

$doc = phpQuery::newDocumentFile('https://google.com');
dd($doc->find("#hptl > a:nth-child(1)")->text());
Result: Empty String

Но если я попытаюсь выбрать элемент, используя jsoup, css-селектор jsoup может легко выбрать элемент.

Я проверил с различными селекторами, и в большинстве случаев они не смогли выбрать элемент, который я хочу, но jsoup не сделал. Вот пример такого селектора:

div.schedule_table:nth-child(8) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(2) > p:nth-child(1)

Я обычно копирую селектор css из инструментов разработчика. Я делаю что-то не так в процессе? Если нет, есть ли лучший парсер с полной поддержкой CSS-селекторов для PHP?

1

Решение

Задача ещё не решена.

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector