句法

句法

如何得到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。 (尝试过libxml2macOS High Sierra 附带的 v2.9.4 以及来自以下版本的 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— 将 parsexmllint的输入解析为 HTML。
  • --xpath "//p"— XPath 查询<p>从输入中选择所有标签。
  • -—从标准输入流 (stdin)(即从的输出)而不是从文件或 URLxmllint获取输入。curl
  • > output.html— 将xmllint的标准输出流 (stdout) 重定向到指定的文件。
  • 2>/dev/null— 可选:xmllint通过将终端重定向到空设备 ( ) 来抑制来自终端的标准错误流 (stderr) /dev/null

(看这个答案一个很好的控制/重定向操作符列表。)

相关内容