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 をそのように構成する方法はありますか?
注: 簡単な正規表現の置換を使用できることは知っています。実装が必要以上に複雑に感じられる場合は、助けを求めるよう友人に言われました。