xmllint
出力を取得する方法に文書?
thufir@dur:~/xmllint$
thufir@dur:~/xmllint$ xmllint --html http://www.skynet.be/nieuws-sport/weer/mijn-weer?cityId=6450 --xpath '//div[@class = "tides"]' - 2>/dev/null
<div class="tides">
<div class="weather-sprite icon st_nl" title="Marées Oostende"></div>
<p>Hoogtij: <strong>10:28</strong> <strong>23:11</strong></p>
<p>Laagtij: <strong>04:44</strong> <strong>17:13</strong></p>
<div class="weather-sprite icon anv_nl clearFlt" title="Marées Anvers"></div>
<p>Hoogtij: <strong>00:41</strong> <strong>13:06</strong></p>
<p>Laagtij: <strong>07:11</strong> <strong>07:11</strong></p>
</div><div class="tides">
<div class="weather-sprite icon st_nl" title="Marées Oostende"></div>
<p>Hoogtij: <strong>11:31</strong> <strong></strong></p>
<p>Laagtij: <strong>05:48</strong> <strong>18:10</strong></p>
<div class="weather-sprite icon anv_nl clearFlt" title="Marées Anvers"></div>
<p>Hoogtij: <strong>01:42</strong> <strong>14:02</strong></p>
<p>Laagtij: <strong>08:20</strong> <strong>08:20</strong></p>
</div>
^C
thufir@dur:~/xmllint$
止まると殺すべきです。美しいマニュアル:
--output FILE Define a file path where xmllint will save the result of parsing. Usually the programs build a tree and save it on stdout, with this option the result XML instance will be saved onto a file.
しかし、正しく動作しませんでした。コンソールの出力はまったく必要ではなく、ファイルの作成にのみ興味があります。 html
処理のために整理することですsaxon
。
答え1
--html
オプションを使用するときに考えるものxmllint
--format
、などの他のオプションは無視されます--output
。 (試験を終えたlibxml2
v2.9.4はmacOS High Sierraに付属しており、v2.9.10は自分で作った.)
代わりに、xmllint
出力をファイルに書き込むには>
(「より大きい」)、リダイレクト演算子を使用して標準出力ストリームをリダイレクトできます。
通事論
xmllint --html input.html > output.html
はい
xmllint --html --xpath "//p" http://example.com > output.html 2>/dev/null
オプション/パラメータ:
--html
- 入力をHTMLに解析します。--xpath "//p"
- XPathクエリは<p>
入力からすべてのタグを選択します。http://example.com
- 入力ファイル(この場合は指定されたURLから直接ダウンロードされます)> output.html
- 標準出力ストリーム(stdout)を指定されたファイルにリダイレクトします。2>/dev/null
- オプション:端末を空のデバイス()にリダイレクトして、端末/dev/null
の標準エラーストリーム(stderr)を抑制します。
(望むよりこの回答素晴らしい出力/エラーリダイレクトチートシートです。 )
HTTPS
xmllint
HTTPSは現在サポートされていないようです(例:この問題)。代わりに、次のような他のユーティリティを使用できます。curl
またはwget
まず、ファイルをダウンロードしてから(「パイプ」/「パイプ」)制御演算子と(「ハイフン/マイナス」)をファイルxmllint
引数として標準入力にパイプします。|
-
xmllint
curl --silent "https://example.com" | xmllint --html --xpath "//p" - > output.html 2>/dev/null
オプション/パラメータ:
--silent
または-s
-curl
進行/エラーメッセージを抑制します(そうでなければxmllint
パーサーによって処理される可能性があります)。"https://example.com"
- 入力ファイルをダウンロードしてcurl
(この場合はHTTPS経由で)に渡しますxmllint
。 (&
URLに他の特殊文字が含まれている場合は引用符を使用してください。)|
- 前のコマンドの標準出力()を次のコマンドのcurl
標準入力()にパイプします。xmllint
--html
-xmllint
入力を解析してHTMLに解析します。--xpath "//p"
- XPathクエリは<p>
入力からすべてのタグを選択します。-
- ファイルやURLではなく、標準入力ストリーム(stdin)(つまり出力)からxmllint
入力を取得します。curl
> output.html
-xmllint
標準出力ストリーム(stdout)を指定されたファイルにリダイレクトします。2>/dev/null
- オプション:xmllint
端末を空のデバイス()にリダイレクトして、端末の標準エラーストリーム(stderr)を抑制します/dev/null
。
(望むよりこの回答制御/リダイレクト演算子の良いリストです。 )