如何得到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
macOS 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
。
(看这个答案一个很好的控制/重定向操作符列表。)