Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以定义一个HTML选择器来连接多个选择器并用分号分隔它们?_Html_Bash_Pup - Fatal编程技术网

是否可以定义一个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

我正在尝试使用解析一个简单的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)
我想连接它们并插入一些自定义文本以获得:

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。