我正在使用YQL控制台运行以下查询:
select *
from xml
where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp"
and itemPath="html.body.form"
未返回任何结果。我也试过使用xpath
和css
只是为了咧嘴笑,但我没有得到任何结果。如果我删除第二个过滤器,我会得到页面标记。难道我做错了什么?它是一个XHTML页面(根据文档类型),因此select * from html
不起作用。
感谢。
更新
我已将查询语法更新为一个似乎至少返回结果的查询,但我需要深入了解。我真正需要的是这样的事情:
select *
from xml
where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp"
and itemPath="html.body.form.div#wrapper.div#page.div#content"
不幸的是,用于通过id访问特定div的语法不起作用,我没有找到任何方法来到达那个返回任何结果的目标div(id="content"
)。
更新
我偶然发现了,我的意思是偶然发现到一个有效的YQL查询中(目前,让我们忽略它的脆弱程度):
select *
from xml
where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp"
and itemPath="html.body.form.div.1.div.4.div.2"
任何有关如何使其不那么脆弱(并且理想地防弹)的建议都会非常非常感激。
答案 0 :(得分:0)
我认为这可能与编写xhtml的方式有关,而不是实际的YQL语句。
Firefox尝试直接访问YQL语句时抛出此错误:
XML Parsing Error: undefined entity
Location:http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fwww.inova.org%2Fpatient-and-visitor-information%2Ffacilities%2Finova-fair-oaks-hospital%2Fplan-your-visit%2Findex.jsp%27
Line Number 307, Column 12:
Fairfax, VA 22033<br/>
-----------^
如果您正在使用jQuery,可以使用以下内容来解决这个问题:
$.ajax({
type : 'GET',
dataType : 'xml',
url : 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fwww.inova.org%2Fpatient-and-visitor-information%2Ffacilities%2Finova-fair-oaks-hospital%2Fplan-your-visit%2Findex.jsp%22',
success : function(xhtml) {
//find all nodes
$(xhtml).find('h1').each(function(){
console.log($(this).html())
});
//target specific node
console.log($('#content').html())
}
})