Pytanie
Jakie narzędzie (najlepiej w systemie Linux) może wybrać zawartość elementu HTML na podstawie ścieżki CSS?
Przykład
Weźmy na przykład następujący dokument 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>
Jaki program wiersza polecenia (np. Rodzaj „cssgrep”) może wyodrębnić wartości za pomocą selektora CSS? To jest:
cssgrep page.html "body > div.content > table > tbody > tr > td.data"
Program wypisze na standardowym wyjściu następujące informacje:
Tabular Content 1
Tabular Content 2
powiązane linki
- 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/
Dziękuję Ci!
brew install html-xml-utils
.Rozwiązanie CSS
Polecenie Wyszukiwarka elementów częściowo zrealizuje to zadanie:
Na przykład:
To renderuje wynik w formacie JSON, który można wyodrębnić.
Rozwiązanie XML
Moduł XML :: Twig („
sudo apt-get install xml-twig-tools
”) zawiera narzędzie o nazwie,xml_grep
które jest w stanie to zrobić, pod warunkiem, że Twój HTML jest oczywiście dobrze sformułowany.Przykro mi, ale nie jestem w stanie tego przetestować, ale coś takiego powinno działać:
źródło
https://github.com/ericchiang/pup ma oparty na CSS język zapytań, który jest ściśle zgodny z twoim przykładem. W rzeczywistości, po wprowadzeniu danych, następujące polecenie:
produkuje:
Trailing
text{}
usuwa tagi HTML.Jedną fajną cechą jest to, że nie trzeba podawać pełnej ścieżki, więc ponownie w przykładzie:
Jedną z zalet
pup
jest to, że używa parsowania golang.org/x/net/html do analizowania HTML5.źródło
Węzeł może to zrobić za pomocą JQuery i fałszywego DOM.
Zrobiłem dla tego obraz Dockera ( https://hub.docker.com/r/phil294/jquery-jsdom/ ):
Drugi argument to kod JavaScript, więc naprawdę możesz zrobić wszystko, co chcesz.
źródło