【发布时间】:2012-12-21 17:41:31
【问题描述】:
我目前正在使用以下 YQL 语句来抓取网站的页面内容。 {EncodedURI} 是我正在抓取的页面。例如:http%3A%2F%2Fstackoverflow.com
SELECT * FROM html WHERE url="{EncodedURI}"
对于大多数 URL,这可以正常工作。 XML 有效,我的应用程序继续。但是在某些 URL 上会返回无效的 XML。有趣的是,我发现导致此错误的一个 URL 是 http://en.wikipedia.org/wiki/God。
我已从查询中获取原始响应并将其通过 XML 验证器并得到以下错误:
error on line 2 at column 6:XML declaration allowed only at the start of the document
似乎响应末尾附近的 XML 变得混乱,但我无法找到确切的问题。
有什么想法吗?
更新:
我已将响应末尾的 XML 更改为:
</body></results></query>>!-- Stotal: 288-->
<!-- Lengine9.yql.ac4.yhouocolm-->
<
到
</body></results></query><!-- Stotal: 288-->
<!-- Lengine9.yql.ac4.yhouocolm-->
我可以相当轻松地让我的应用程序修改 XML 以使其正常工作,但显然该解决方案并不理想。有人知道如何避免这个问题吗?
【问题讨论】:
-
你是如何执行你的查询的?
-
在yql console 中它可以正常工作,但是如果您在控制台底部复制 REST 查询,则会出现错误。
-
我这样做时没有收到任何错误。
-
这很奇怪。您将 REST 查询粘贴到浏览器的地址栏中,但没有返回格式错误的 XML?作为参考,我使用的是 Chrome,我注意到 IE 不会突出显示 XML 格式错误。
-
哦,我明白了,从查询末尾删除
&diagnostics=true