Вопрос
Какой инструмент (предпочтительно для Linux) может выбрать содержимое элемента HTML на основе его пути CSS?
пример
Например, рассмотрим следующий HTML-документ:
<html>
<body>
<div class="header">
<h1>Header</h1>
</div>
<div class="content">
<table>
<tbody>
<tr><td class="data">Tabular Content 1</td></tr>
<tr><td class="data">Tabular Content 2</td></tr>
</tbody>
</table>
</div>
<div class="footer">
<p>Footer</p>
</div>
</body>
</html>
Какая программа командной строки (например, своего рода «cssgrep») может извлекать значения с помощью селектора CSS? Это:
cssgrep page.html "body > div.content > table > tbody > tr > td.data"
Программа напишет следующее в стандартный вывод:
Tabular Content 1
Tabular Content 2
Ссылки по теме
- https://getfirebug.com/wiki/index.php/Command_Line_API#.24.24.28selector.29
- /programming/7334942/is-there-something-like-a-css-selector-or-xpath-grep
- https://github.com/keeganstreet/element-finder
- http://www.w3.org/Tools/HTML-XML-utils/
Спасибо!
brew install html-xml-utils
.Решение CSS
Команда Element Finder частично выполнит эту задачу:
Например:
Это отображает результат в формате JSON, который можно извлечь.
Решение XML
Модуль XML :: Twig ("
sudo apt-get install xml-twig-tools
") поставляется с инструментом под названием,xml_grep
который способен сделать это, конечно, при условии, что ваш HTML правильно сформирован.Извините, я не могу проверить это в данный момент, но что-то вроде этого должно работать:
источник
https://github.com/ericchiang/pup имеет язык запросов на основе CSS, который соответствует вашему примеру. На самом деле, с вашим вводом, следующая команда:
производит:
Трейлинг
text{}
удаляет теги HTML.Одна приятная особенность заключается в том, что не нужно указывать полный путь, так что снова с вашим примером:
Одним из преимуществ
pup
является то, что он использует пакет golang.org/x/net/html для анализа HTML5.источник
Node может сделать это с помощью JQuery и поддельного DOM.
Я сделал для этого образ Docker ( https://hub.docker.com/r/phil294/jquery-jsdom/ ):
Второй аргумент - это код JavaScript, поэтому вы можете делать все, что захотите.
источник