Dav*_*vis 20 html web grep command-line css
什么工具(最好用于 Linux)可以根据其 CSS 路径选择 HTML 元素的内容?
例如,考虑以下 HTML 文档:
<html>
<body>
<div class="header">
<h1>Header</h1>
</div>
<div class="content">
<table>
<tbody>
<tr><td class="data">Tabular Content 1</td></tr>
<tr><td class="data">Tabular Content 2</td></tr>
</tbody>
</table>
</div>
<div class="footer">
<p>Footer</p>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
什么命令行程序(例如,一种“cssgrep”)可以使用 CSS 选择器提取值?那是:
cssgrep page.html "body > div.content > table > tbody > tr > td.data"
Run Code Online (Sandbox Code Playgroud)
该程序会将以下内容写入标准输出:
Tabular Content 1
Tabular Content 2
Run Code Online (Sandbox Code Playgroud)
谢谢!
Dav*_*vis 17
使用W3C 工具进行 HTML/XML 解析和使用 CSS 选择器提取内容。例如:
hxnormalize -l 240 -x filename.html | hxselect -s '\n' -c "td.data"
Run Code Online (Sandbox Code Playgroud)
将产生所需的输出:
Tabular Content 1
Tabular Content 2
Run Code Online (Sandbox Code Playgroud)
使用 240 个字符的行长度可确保内容较长的元素不会被拆分为多行。该hxnormalize -x命令创建一个格式良好的 XML 文档,可供hxselect.
小智 7
Element Finder 命令将部分完成此任务:
例如:
elfinder -j -s td.data -x "html"
Run Code Online (Sandbox Code Playgroud)
这会将结果呈现为可以提取的 JSON 格式。
该XML ::特威格模块(” sudo apt-get install xml-twig-tools“),带有一个名为工具xml_grep,它能够仅仅做到这一点,前提是你的HTML是良好的,当然。
很抱歉,我目前无法对此进行测试,但是这样的事情应该可行:
xml_grep -t '*/div[@class="content"]/table/tbody/tr/td[@class="data"]' file.html
Run Code Online (Sandbox Code Playgroud)
https://github.com/ericchiang/pup有一种基于 CSS 的查询语言,与您的示例非常一致。事实上,根据您的输入,以下命令:
pup "body > div.content > table > tbody > tr > td.data text{}"
Run Code Online (Sandbox Code Playgroud)
产生:
Tabular Content 1
Tabular Content 2
Run Code Online (Sandbox Code Playgroud)
尾随text{}删除 HTML 标签。
一个不错的功能是不需要提供完整路径,因此再次使用您的示例:
$ pup 'td.data text{}' < input.html
Tabular Content 1
Tabular Content 2
Run Code Online (Sandbox Code Playgroud)
的一个优点pup是它使用 golang.org/x/net/html 包来解析 HTML5。
| 归档时间: |
|
| 查看次数: |
9167 次 |
| 最近记录: |