Библиотека CSS-селектора CSS?

Есть ли класс / библиотека PHP, который позволит мне запрашивать документ XHTML с помощью селекторов CSS? Мне нужно очистить некоторые страницы для данных, которые очень легко доступны, если я могу каким-то образом использовать селектор CSS (jQuery испортил мне!). Есть идеи?

После дальнейшего Googling (исходные результаты были не очень полезны), похоже, на самом деле для этого есть библиотека Zend Framework, а также некоторые другие:

  • DOM-запросы
  • phpQuery
  • pQuery
  • QueryPath
  • Простой HTML DOM Parser
  • Инструментарий Ultimate Web Scraper Toolkit
  • Зенд-Dom

XPath – довольно стандартный способ доступа к узлам XML (и XHTML) и обеспечивает гораздо большую точность, чем CSS.

Еще один:
http://querypath.org/

Великий – это компонент Symfony 2, CssSelector \ Parser Introduction . Он преобразует селектора CSS в выражения XPath. Взгляните =)

Исходный код

Для пользователей jQuery наиболее интересным может быть порт jQuery для PHP , который является phpQuery . Портируются практически все разделы библиотеки. Кроме того, он содержит плагин WebBrowser , который может использоваться для пути / процессов веб-скрепок всего сайта (например, доступ к данным, доступным после входа в систему). Он просто имитирует веб-браузер на сервере (события и файлы cookie тоже). В последних версиях экспериментальная поддержка пространств имен XML и CSS3 "|" селектор .

Я закончил использование PHP Query Lite , это очень просто и имеет все, что мне нужно.

Для разбора документа я использую DOM . Это может легко решить вашу проблему, если вы знаете имя тега (в этом примере «div»):

$doc = new DOMDocument(); $doc->loadHTML($html); $elements = $doc->getElementsByTagName("div"); foreach ($elements as $e){ if ($e->getAttribute("class")!="someclass") continue; //its a div.classname } 

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

Я написал мой, основанный на движке селектора CSS Mootools http://selectors.svn.exyks.org/ . он полагается на способность расширения simplexml (поэтому он доступен только для чтения)