我目前使用以下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