【问题标题】:How to use multiple xpath selectors in a YQL query如何在 YQL 查询中使用多个 xpath 选择器
【发布时间】:2010-10-13 15:46:45
【问题描述】:

嘿,我想使用 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,我将不胜感激!

谢谢。

【问题讨论】:

    标签: php yql xpath


    【解决方案1】:

    关于 CSS:

    有关此内容,请参阅 YQL 网站本身。在 google 上搜索 YQL 和 CSS(我这里只能发一个链接,第二个更有用。)

    他们那里的例子实际上不再有效,但你可以试试这个例子,它从stackoverflow的首页抓取问题。

    YQL example

    一个 XPATH 的多项选择:

    您可以使用 xpath 语法直接执行此操作。例如

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

    【讨论】:

    • 谢谢,不知道语法,但已经解决了。
    • 非常非常有用!谢谢。
    • 赞成 .. 我自己想通了,但想知道是否可以在两个 xPath 的结果之间留一个空格或其他东西,以便稍后我可以解析结果并获得两个不同的值。
    • 知道如何从 amazon.in/Seiko-Premier-Analog-Blue-Watch/dp/... 中获取图像和元描述吗?
    【解决方案2】:

    您也可以像这样编写 Multiple XPATH Selects:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-05
        • 2020-05-12
        • 2011-06-22
        • 1970-01-01
        • 2013-12-29
        • 2021-07-19
        • 1970-01-01
        • 2021-09-16
        相关资源
        最近更新 更多