通事論

通事論

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。 (試験を終えたlibxml2v2.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

xmllintHTTPSは現在サポートされていないようです(例:この問題)。代わりに、次のような他のユーティリティを使用できます。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

(望むよりこの回答制御/リダイレクト演算子の良いリストです。 )

関連情報