是否有类似“CSS 选择器”的东西?或 XPath grep?
我需要找到一堆 HTML 文件中位于以下结构 (CSS) 中的所有位置:
div.a ul.b
或 XPath:
//div[@class="a"]//div[@class="b"]
grep
在这里对我没有帮助。是否有一个命令行工具可以返回与此条件匹配的所有文件(以及可选的其中所有位置)?即,如果文件与某个 HTML 或 XML 结构匹配,则返回文件名。
I need to find all places in a bunch of HTML files, that lie in following structure (CSS):
div.a ul.b
or XPath:
//div[@class="a"]//div[@class="b"]
grep
doesn't help me here. Is there a command-line tool that returns all files (and optionally all places therein), that match this criterium? I.e., that returns file names, if the file matches a certain HTML or XML structure.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试试这个:
aptitude 安装 html-xml-utils
brew install html-xml-utils
其中
"label.black"
是唯一标识 HTML 元素名称的 CSS 选择器。编写一个名为cssgrep
的帮助程序脚本:然后您可以运行:
这将为
black
类的所有 HTMLlabel
元素生成内容。-l 240
参数对于避免解析输出中的换行符非常重要。例如,如果输入,则
-l 240
会将 HTML 重新格式化为,在第 240 列插入换行符,这简化了解析。也可以扩展到 1024 或更高。
另请参阅:
Try this:
aptitude install html-xml-utils
brew install html-xml-utils
hxnormalize -l 240 -x filename.html | hxselect -s '\n' -c "label.black"
Where
"label.black"
is the CSS selector that uniquely identifies the name of the HTML element. Write a helper script namedcssgrep
:You can then run:
This will generate the content for all HTML
label
elements of the classblack
.The
-l 240
argument is important to avoid parsing line-breaks in the output. For example if<label class="black">Text to \nextract</label>
is the input, then-l 240
will reformat the HTML to<label class="black">Text to extract</label>
, inserting newlines at column 240, which simplifies parsing. Extending out to 1024 or beyond is also possible.See also:
我用 Node JS 构建了一个命令行工具,它就是这样做的。您输入 CSS 选择器,它将搜索目录中的所有 HTML 文件,并告诉您哪些文件与该选择器匹配。
您需要安装 Element Finder,
cd
到您要搜索的目录中,然后运行:有关详细信息,请参阅 http://keegan.st/2012/06/03/find-in-files-with-css-selectors/
I have built a command line tool with Node JS which does just this. You enter a CSS selector and it will search through all of the HTML files in the directory and tell you which files have matches for that selector.
You will need to install Element Finder,
cd
into the directory you want to search, and then run:For more info please see http://keegan.st/2012/06/03/find-in-files-with-css-selectors/
至少有 4 个工具:
pup - 受到 jq 的启发,pup 的目标是成为一个快速的以及从终端探索 HTML 的灵活方式。
htmlq - 喜欢 jq,但针对 HTML。使用 CSS 选择器从 HTML 文件中提取部分内容。
hq - 使用 CSS 和 XPath 选择器的轻量级命令行 HTML 处理器。
xq - 命令行 XML 和 HTML 美化器和内容提取器。
示例:
There are at least 4 tools:
pup - Inspired by jq, pup aims to be a fast and flexible way of exploring HTML from the terminal.
htmlq - Likes jq, but for HTML. Uses CSS selectors to extract bits of content from HTML files.
hq - Lightweight command line HTML processor using CSS and XPath selectors.
xq - Command-line XML and HTML beautifier and content extractor.
Examples:
Per Nat 的回答在这里:
How to parse XML in Bash?
Per Nat's answer here:
How to parse XML in Bash?