从网站收集数据

时间:2014-08-13 13:38:07

标签: xidel

我有两个网页

第1页:

<data>
<item>
<name>Item 1</name>
<url>http://someUrl.html</url>
</item>
</data>

第2页:http://someUrl.html

<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实现这一目标?

1 个答案:

答案 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上双引号! 如果您需要解释线路中的不同部分,请问...... :-)干杯!