2017-05-25 166 views
0

我想处理一个XML文件,但我得到这个错误:的Python解析XML饲料错误:XPathEvalError:未定义命名空间前缀

XPathEvalError: Undefined namespace prefix 

在这一行:

print "category =", item.xpath("./g:google_product_category") 

这是XML文件:

<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0"> 
<channel> 
<title>example.net.br</title> 
<link>http://www.example.net.br/</link> 
<description>Data feed description.</description> 
<item> 
<title> 
<![CDATA[ 
example 
]]> 
</title> 
<link> 
<![CDATA[ 
example 
]]> 
</link> 
<description> 
<![CDATA[ 
example]]> 
</description> 
<g:google_product_category> 
<![CDATA[ 
example 
]]> 
</g:google_product_category> 
... 

这是我的代码:

headers = { 'User-Agent' : 'Mozilla/5.0' } 
req = urllib2.Request(feed_url, None, headers) 
file = urllib2.urlopen(req).read() 

file = etree.fromstring(file) 
for item in file.xpath('/rss/channel/item'): 
    print "title =", item.xpath("./title/text()")[0] 
    print "link =", item.xpath("./link/text()")[0] 
    print "description =", item.xpath("./description/text()")[0] 
    print "category =", item.xpath("./g:google_product_category") 

我该如何解决这个问题?

回答

2

中的XPath方法接受一个额外的参数:命名空间

你能尝试修改该行如下:

print "category =", item.xpath("./g:google_product_category", namespaces={'g': 'http://base.google.com/ns/1.0'}) 

来源提供的信息here

相关问题