是否可以定义一个HTML选择器来连接多个选择器并用分号分隔它们?
我正在尝试使用解析一个简单的HTML页面。 这是一个命令行HTML解析器,它接受通用的HTML选择器 我想选择:是否可以定义一个HTML选择器来连接多个选择器并用分号分隔它们?,html,bash,pup,Html,Bash,Pup,我正在尝试使用解析一个简单的HTML页面。 这是一个命令行HTML解析器,它接受通用的HTML选择器 我想选择: 'div.aclass text{}' #(would be SampleA) 'div.bclass text{}' #(would be SampleB) 我还想选择: 'div.aclass text{}' #(would be SampleA) 'div.bclass text{}' #(would be SampleB) 我想连接它们并插入一些自定义文本以获得: S
'div.aclass text{}' #(would be SampleA)
'div.bclass text{}' #(would be SampleB)
我还想选择:
'div.aclass text{}' #(would be SampleA)
'div.bclass text{}' #(would be SampleB)
我想连接它们并插入一些自定义文本以获得:
SampleA;MYEXTRASTRING;SampleB
我想避免多次给小狗打电话,因为它太慢了
我可以选择多个标记:
'div.aclass text{}, div.bclass text{}'
但这将导致:
SampleA
SampleB
有没有比pup更好的选择
注意:Python不是一个选项,因为它对于我的需要来说非常慢。带有pup的多个选择器似乎不起作用,这里有一个问题: 为了达到您的目的,我建议使用hxselect命令,它可以在HTML XML UTIL中找到: 例如:
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用于下载的html内容
hxselect部件:
hxselect支持多个CSS选择器。使用、分隔这些选择器
-c:仅打印内容,不带html标记
-s:每次匹配后的分隔符文本。在你的情况下,它是;髓鞘外基质
sed部分:
因为将为每个匹配添加-s分隔符文本,这意味着将添加两次。sed用于删除最后匹配的分隔符文本。请尝试…|hxnormalize-x | hxselect。。。?hxnormalize是HTMLXMLUTIL中的另一个命令,用于规范hxselect 7.1中的htmlI。它确实显示了语法错误。试试最新的7.7版,它可以正常工作。从7.7版开始,hxselect似乎不支持多个逗号分隔的选择器,但只支持两个。当给定两个以上选择器时,它只考虑第一个和最后一个提供的选择器。有人能证实吗?@Skippel Grandgouru似乎是这样,你是对的。我也是这样,中间的选择器被忽略了…@kevinchui。显然,我找不到W3C存储库来报告这个bug。