我有两个网页
第1页:
<data>
<item>
<name>Item 1</name>
<url>http://someUrl.html</url>
</item>
</data>
<data>
<info>Info 1</info>
<info>Info 2</info>
<info>Info 3</info>
</data>
我想抓取第1页并按照其中的所有链接生成以下输出
Item 1, Info 1
Item 1, Info 2
Item 1, Info 3
...
我如何使用Xidel实现这一目标?
答案 0 :(得分:0)
我最近找到了Xidel,所以我不是专家,但在我看来,这是一个非常强大的瑞士刀命令行刮擦工具,应该为更多人所知。
现在,为了回答您的问题,我认为以下(使用html-templates)完全符合您的要求:
xidel -q page1.html --extract-exclude=name -e "<name>{name:=text()}</name>*" -f "<url>{link:=text()}</url>*" -e "<info>{string-join(($name, text()), ', ')}</info>*" --hide-variable-names
或者,使用CSS选择器更短:
xidel -q page1.html --extract-exclude=name -e "name:=css('name')" -f "link:=css('url')" -e "css('info')/string-join(($name,.),', ')" --hide-variable-names
或者,最短的XPath:
xidel -q page1.html --extract-exclude=name -e name:=//name -f link:=//url -e "//info/string-join(($name,.),', ')" --hide-variable-names
可能的最短行(但不是CSV格式)是:
xidel -q page1.html -e //name,//info -f //url
以上命令适用于Windows,因此请务必更换引号&lt; - &gt;在mac / ux上双引号! 如果您需要解释线路中的不同部分,请问...... :-)干杯!