如何在YQL查询中使用多个xpath选择器

时间:2010-10-13 15:46:45

标签: php yql xpath

嘿,我想使用YQL从我的博客中删除一些数据:

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']"

如何在查询中使用不同的xpath位?例如。我可以这样做:

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']" AND xpath ="//div[@class='title']"

假设我想获得帖子和标题?我想我可以接受所有的HTML,但我宁愿只接受我需要的东西,因为速度是一个问题。

我有HTML后想从标记中提取文本,是否可以使用PHP正则表达式?

我也理解你可以使用CSS语法,如果你有使用YQL的经验并且可以指导我如何编写类似的查询到上面的那个但是在CSS而不是XPATH我会很感激!

感谢。

3 个答案:

答案 0 :(得分:11)

关于CSS:

请参阅YQL网站本身。在谷歌搜索YQL和CSS(我只能在这里发布一个链接,第二个链接更有用。)

他们在那里的例子实际上已经不再有效了,但你可以尝试这个例子,它从stackoverflow的首页上删除了问题。

YQL example

使用一个XPATH进行多次选择:

您可以使用xpath语法直接执行此操作。 e.g。

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title']|//head/meta[@name='description']|//head/meta[@name='keywords']"

答案 1 :(得分:0)

您还可以编写多个XPATH选择,如下所示:

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title' or @name='description']"

答案 2 :(得分:-3)

这是不可能的。您需要执行此查询两次。第一个xpath,第二次是第二个xpath。当然,您可以编写自己的open table声明,并为此类查询提供支持。