html - 是否可以定义一个 HTML 选择器来连接多个选择器并用分号分隔它们?

标签 html bash pup

我正在尝试使用 pup 解析一个简单的 HTML 页面。 。 这是一个命令行 HTML 解析器,它接受通用 HTML 选择器。

我要选择:

'div.aclass text{}' #(would be SampleA)

我还想选择:

'div.bclass text{}' #(would be SampleB)

我想连接它们并插入一些自定义文本以获得:

SampleA;MYEXTRASTRING;SampleB

我想避免多次调用 pup,因为它很慢。

我可以选择多个标签:

'div.aclass text{}, div.bclass text{}'

但这会导致:

SampleA
SampleB

为此目的,还有比 pup 更好的选择吗?

(注意:Python 不是一个选择,因为它对于我的需求来说非常慢。)

最佳答案

带有 pup 的多个选择器似乎不起作用,这里有一个问题: https://github.com/ericchiang/pup/issues/59

为了达到你的目的,我建议使用hxselect命令,它可以在HTML-XML-utils中找到:https://www.w3.org/Tools/HTML-XML-utils/README

示例:

curl -s http://example.com/ | hxselect -c 'body > div:nth-child(1) > h1:nth-child(1)', 'body > div:nth-child(1) > p:nth-child(3) > a:nth-child(1)' -s ';MYEXTRASTRING;' | sed 's/\(.*\);MYEXTRASTRING;/\1/'

curl 部分:

curl用于下载http://exmaple.com的html内容

hxselect部分:

hxselect 支持多个 CSS 选择器。使用 , 分隔这些选择器。

-c:只打印内容,不带html标签

-s:每次匹配后的分隔 rune 本。就您而言,它是 ;MYEXTRASTRING;

sed 部分:

因为每次匹配都会添加 -s 分隔 rune 本,这意味着会添加两次。 sed 用于删除最后匹配的分隔 rune 本。

关于html - 是否可以定义一个 HTML 选择器来连接多个选择器并用分号分隔它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54043845/

相关文章:

html - 使用 CSS 检测 <select> 中是否选择了 <option>

html - 导航栏下拉

jquery - 如何锚定在jquery中?

linux - 通过 bash 在文件中搜索字符串,但只能匹配

parsing - 如何使用pup限制标签级别的结果数量?

html - 如何通过pup从下一行选择值?

javascript - 延迟加载 HTML5 图片元素

linux - 无法从包含句点的参数中获取 "touch"文件

linux - 减号操作错误