我正在使用 LXML 创建站点地图解析器,并希望提取带有其值的标签。然而,结果标签总是包含 xmlns 信息,例如{http://www.sitemaps.org/schemas/sitemap/0.9}loc
.
body = cStringIO.StringIO(item['body'])
parser = etree.XMLParser(recover=True, load_dtd=True, ns_clean=True)
tree = etree.parse(body, parser)
for sitemap in tree.xpath('./*'):
print sitemap.xpath('./*')[0].tag
# prints: {http://www.sitemaps.org/schemas/sitemap/0.9}loc
站点地图字符串:
<sitemap xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<loc>http://www.some_page.com/sitemap-page-2010-11.xml</loc>
<lastmod>2011-12-22T15:46:17+00:00</lastmod>
</sitemap>
我只想提取标签 - 这里是 'loc',没有{http://www.sitemaps.org/schemas/sitemap/0.9}
. LXML 中有没有办法以这种方式配置解析器或 LXML?
注意:我知道我可以使用简单的正则表达式替换 - 如果一个实现感觉比它应该的更复杂,一位朋友告诉我寻求帮助。