Pertanyaan
Alat apa (lebih disukai untuk Linux) yang dapat memilih konten elemen HTML berdasarkan jalur CSS-nya?
Contoh
Misalnya, pertimbangkan dokumen HTML berikut:
<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>
Program baris perintah apa (misalnya, semacam "cssgrep") yang dapat mengekstraksi nilai menggunakan pemilih CSS? Itu adalah:
cssgrep page.html "body > div.content > table > tbody > tr > td.data"
Program akan menulis yang berikut ini ke output standar:
Tabular Content 1
Tabular Content 2
tautan yang berhubungan
- https://getfirebug.com/wiki/index.php/Command_Line_API#.24.24.28selektor.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/
Terima kasih!
brew install html-xml-utils
,.Solusi CSS
Perintah Element Finder sebagian akan menyelesaikan tugas ini:
Sebagai contoh:
Ini membuat hasil dalam format JSON, yang dapat diekstraksi.
Solusi XML
The XML :: Ranting modul ("
sudo apt-get install xml-twig-tools
") dilengkapi dengan alat bernamaxml_grep
yang mampu melakukan hal itu, asalkan HTML Anda baik-terbentuk, tentu saja.Maaf saya tidak dapat menguji ini saat ini, tetapi sesuatu seperti ini seharusnya berfungsi:
sumber
https://github.com/ericchiang/pup memiliki bahasa permintaan berbasis CSS yang sesuai dengan contoh Anda. Bahkan, dengan input Anda, perintah berikut:
menghasilkan:
Trailing
text{}
menghapus tag HTML.Salah satu fitur yang bagus adalah bahwa path lengkap tidak perlu diberikan, sehingga sekali lagi dengan contoh Anda:
Salah satu kelebihannya
pup
adalah ia menggunakan paket golang.org/x/net/html untuk parsing HTML5.sumber
Node dapat melakukannya dengan JQuery dan DOM palsu.
Saya membuat gambar Docker untuk itu ( https://hub.docker.com/r/phil294/jquery-jsdom/ ):
Argumen kedua adalah kode JavaScript, jadi Anda bisa melakukan apa pun yang Anda inginkan.
sumber