2012-12-21 66 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