我目前正在使用以下YQL语句来抓取网站的网页内容。其中{EncodedURI}
是我正在抓取的页面。例如:http%3A%2F%2Fstackoverflow.com
SELECT * FROM html WHERE url="{EncodedURI}"
对于大多数网址,这很好用。 XML是有效的,我的应用程序继续。但是在某些URL上返回了无效的XML。有趣的是,我发现一个导致此错误的网址是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,因此它可以工作,但显然解决方案并不理想。有人知道如何避免这个问题吗?
答案 0 :(得分:1)
我在firefox中看到错误。我可以解决的问题是请求JSON响应。只需将&format=json
添加到REST调用即可。例如:Try this。至少你不必担心饲料甚至不解析。再次,这不是理想的,但应该有效。