2

我目前正在使用以下 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 以使其正常工作,但显然该解决方案并不理想。有人知道如何避免这个问题吗?

4

1 回答 1

1

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

于 2012-12-21T22:46:47.747 回答