2014-01-29 69 views
0

我有這樣的代碼:的Xml Python的 - 沒有很好地形成

import requests 
from xml.dom.minidom import parseString 
site = 'test.com' 
r = requests.get('http://bar-navig.yandex.ru/u?ver=2&url=http://%s&show=1' % (site)) 
#print r.text.encode('utf-8') 
xmldoc = parseString(r.text.encode('utf-8')) 
print xmldoc.getElementsByTagName('tcy')[0].attributes['value'].value 

所以,它的工作原理,但如果我有site,例如,'vk.com''google.ru',我有一個錯誤:xml.parsers.expat.ExpatError: not well-formed (invalid token)

如何解決?謝謝。

回答

3

這是一個編碼問題。除非另有規定,否則XML應該是基於ASCII的。此XML源特別指定它編碼爲windows-1251

試試這個:

parseString(r.text.encode('windows-1251')) 

那麼它可以被解析。

Minidom不是很聰明,否則當通過unicode(這不起作用)時,它可以自己弄清楚。

0

除了iso-8859-1之外,我嘗試使用'utf-8'和'utf-16'的編碼,但它沒有工作(對於印度的一些網站,儘管我沒有注意到任何非ascii在他們的字符)。但我轉向硒,一切都解決了。避免minidom並不難,因爲硒的界面與minidom非常相似。乾杯!

相關問題