【问题标题】:YQL Query returning invalid XMLYQL 查询返回无效的 XML
【发布时间】: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 格式错误。
  • 哦,我明白了,从查询末尾删除&amp;diagnostics=true

标签: xml wikipedia yql


【解决方案1】:

我在 Firefox 中看到了错误。我可以做的解决方法是要求 JSON 响应。只需在 REST 调用中添加 &amp;format=json。例如:Try this。至少您不必担心提要甚至不解析。同样,这并不理想,但应该可以。

【讨论】:

  • 嗯,我试试看。我的应用程序是用 JavaScript 编写的,我使用 jQuery 从我想要的响应中搜索和收集信息,但我可以改变它。再努力一点!
  • 工作...我还在 YQL 论坛上发了一个帖子。希望他们将其记录为错误。感谢您的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多