2012-12-21 68 views
2

我目前使用以下YQL语句来刮取网站的页面内容。其中{EncodedURI}是我刮的页面。例如:HTTP%3A%2F%2Fstackoverflow.comYQL查询返回无效的XML

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所以它的工作原理,但很明显,解决方案并不理想。有谁知道如何避免这个问题?

+0

你是如何执行你的查询? – svick

+0

在[yql控制台](http://developer.yahoo.com/yql/console/#h=SELECT%20*%20FROM%20html%20WHERE%20url%3D%22http%3A//en.wikipedia.org/wiki/God%22%20)它工作正常,但如果您在控制台底部复制REST查询,则会出现错误。 – mbaker3

+0

当我这样做时,我不会收到任何错误。 – svick

回答

1

我看到在Firefox中的错误。我可以做的事情是解决这个问题的JSON响应。只需将&format=json添加到REST呼叫。例如:Try this。至少您不必担心提要甚至不解析。再次,这不是理想的,但应该工作。

+0

hmmm的末尾删除'&diagnostics = true',我会试试看。我的应用程序是JavaScript,我使用jQuery从我想要的响应中搜索和收集信息,但我可以改变它。多一点努力! – mbaker3

+0

作品...我也在YQL论坛发了帖子。希望他们将它记录为一个错误。感谢您的建议 – mbaker3