【问题标题】:Trouble with Xpath and YQLXpath 和 YQL 的问题
【发布时间】:2012-07-17 22:00:41
【问题描述】:

希望这很容易。我正在尝试使用 YQL 从 wordpress 博客的不同文章中提取“标题”图像。每篇文章都有一个不同的“标题”图像,类名略有不同(无 id)。我需要的每张图片都共享一个基本的 CSS 类,“alignright”。如果我执行如下查询,则不会返回任何内容。

select * from html where url="urlofblog.com/" and xpath="//img[@class='alignright']"

但是,如果我更改查询以使其类与特定图像完全匹配

select * from html where url="urlofblog.com/" and xpath="//img[@class='alignright size-full wp-image-3051']"

我得到了有问题的图像。看起来 YQL 将 "img[@class=" 视为一个大字符串,而不是多个输入。问题是当被视为一个大字符串时,这些图像类都不匹配。以下是我试图解决的问题:

  1. 我查看了 YQL 的“like”参数。 (没有运气找到有用的东西)
  2. 试图用 xpath 找到更好的方法(直到今天我从未使用过)。那次搜索让我here。到目前为止,我仍然无法让它工作。
  3. 我尝试过使用:img[matches(@class, '\balignright\b')],但我不认为 YQL 支持它。

有谁知道是否有办法使用该基本 css 类获取图像?我无权更改博客上的任何内容(例如插入 ID)。

【问题讨论】:

  • 你能给我你要测试的网址吗?我想在 YQL 控制台上测试一下。

标签: xml xpath yql


【解决方案1】:

在这里使用 XPath contains() 字符串函数会很好。看起来您正在尝试从 Wordpress 站点获取图像,该站点将根据需要向项目添加类。不用担心它是否以 CSS 类开头,只是 img 在 class 属性中有 CSS 类。

//img[contains(@class,'alignright')]

【讨论】:

    【解决方案2】:

    您可以使用 XPath 字符串函数,例如starts-with:

    //img[starts-with(@class, 'alignright')]
    

    【讨论】:

    • 函数的链接是一个很好的线索。我最终使用了“包含”。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2013-08-03
    • 1970-01-01
    相关资源
    最近更新 更多