当前位置:  开发笔记 > 编程语言 > 正文

使用Yahoo YQL查询html

如何解决《使用YahooYQL查询html》经验,为你挑选了1个好方法。

在尝试使用YQL提供的Yahoo Query Language和xpath功能解析html时,我遇到了无法提取"text()"或属性值的问题.
例如
perma链接

select * from html where url="http://stackoverflow.com" 
and xpath='//div/h3/a'

给出一个锚点列表为xml


    Filling the text area with the text when a button is clicked...
 

现在,当我尝试使用提取节点值时

select * from html where url="http://stackoverflow.com" 
and xpath='//div/h3/a/text()'

我得到的结果是连接而不是节点列表,例如

Xcode: attaching to a remote process for debuggingWhy is b
…… 

如何将其分隔为节点列表以及如何选择属性值

像这样的查询

select * from html where url="http://stackoverflow.com"
and xpath='//div/h3/a[@href]'

给了我相同的查询结果 div/h3/a



1> Nagesh Susar..:

YQL要求xpath表达式计算为itemPath而不是节点文本.但是,一旦有了itemPath,就可以从树中投射各种值

换句话说,ItemPath应该指向生成的HTML中的Node而不是文本内容/属性.当您从数据中选择*时,YQL将返回所有匹配的节点及其子节点.

select * from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

这将返回与xpath匹配的所有a.现在要投影文本内容,您可以使用它来投影

select content from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

"content"返回节点内保存的文本内容.

对于投影属性,可以相对于xpath表达式指定它.在这种情况下,因为你需要相对于a的href.

select href from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

这回来了 ....

如果您同时需要属性'href'和textContent,则可以执行以下YQL查询:

select href, content from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

收益:

 double pointer const issue issue... 

希望有所帮助.如果你对YQL有更多疑问,请告诉我.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有