Раньше я использовал jsoup для разбора HTML в Java. Он может выбрать и разобрать практически все. Недавно я переключился на PHP и попробовал несколько парсеров DOM, но селекторы css работают не так, как ожидалось (или не так хорошо, как jsoup). Например, я попытался выбрать Около (в верхнем левом углу) ссылка Googleдомашняя страница с использованием:
$crawler->filter('#hptl > a:nth-child(1)')->each(function ($node) {
print $node->text()."\n";
});
Result: Empty Page
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
$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?
Задача ещё не решена.
Других решений пока нет …