我使用了urllib来获取以下数据:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<videos xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:www="http://www.www.com"">
<video type="cl">
<cd>
<src lang="music">http://www.google.com/ </src>
</cd>
</video>
</videos>
我希望得到http://www.google.com/
,这是我的代码:
import xml.etree.ElementTree as etree
data='<?xml version="1.0" encoding="UTF-8" standalone="yes"?><videos xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:www="http://www.www.com""><video type="cl"><cd><src lang="music">http://www.google.com/ </src></cd></video></videos>'
tree = etree.fromstring(data)
geturl=tree.findtext('/video/cd/src').strip()
print geturl
我收到错误:
AttributeError: 'NoneType' object has no attribute 'strip'
显然,findtext
失败了。我试过findtext('src')
,也不会工作。
怎么了?
答案 0 :(得分:2)
从路径中删除第一个正斜杠:video/cd/src
:
import xml.etree.ElementTree as etree
data='''<?xml version="1.0" encoding="UTF-8" standalone="yes"?><videos xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:www="http://www.www.com"><video type="cl"><cd><src lang="music">http://www.google.com/ </src></cd></video></videos>'''
tree = etree.fromstring(data)
geturl=tree.findtext('video/cd/src').strip()
print geturl
产量
http://www.google.com/
正斜杠表示绝对路径,元素上不允许这样做。
PS。您发布的数据中也存在语法错误:xmlns:www="http://www.www.com""
最后有两个双引号...