サクッと shell script で HTML の中の何かを取り出したい時があります。 そんな時に使えるのが xmllint. しっかりやるなら python の Beautiful Soup を使ったりしますが、本当に簡単なことを簡単にやりたい場合に xmllint でサクッとやったメモ。
試した環境は次の通り。
$ sw_vers
ProductName: macOS
ProductVersion: 13.1
BuildVersion: 22C65$ /usr/bin/xmllint --version
/usr/bin/xmllint: using libxml version 20913
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude ICU ISO8859X Unicode Regexps Automata Schemas Schematron Modules Debug ZlibFORM の HTML が返ってくるのでそこから hidden で埋め込まれている input の value や送信先 (action) を取り出したかった。
次のような HTML (example.html) があったとする
| |
item1 の value を取得したい場合にどうするか
| |
value の中身の apple が取得きた。
string() で囲まなかった場合は value="apple" となる。
| |
さらに @value も外すとこんな感じ。
| |
では title の値 (<title> と </title> で囲まれた中身) が欲しい場合はどうするか。
text() を指定する。
| |
text() を付けずに次の様にすると <title>myform</title> が出力される。
| |
あ、そうそう、form の action は次のようにする。
| |

