我目前使用以下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所以它的工作原理,但很明显,解决方案并不理想。有谁知道如何避免这个问题?
你是如何执行你的查询? – svick
在[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
当我这样做时,我不会收到任何错误。 – svick