私は非常に大きな(7GB)MediaWiki XMLダンプを持っています。これは、Wikiの各ページに加えられた各変更の記録で構成されています。どのユーザーが各ページに貢献したかを記録しようとしているので、XMLからそれを抽出したいと思います。
XMLは次のようになります。
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.3/">
<page>
<title>Unique Page title</title>
<id>11</id>
<restrictions>sysop</restrictions>
<revision>
<id>11</id>
<timestamp>2005-10-26T02:23:03Z</timestamp>
<contributor>
<ip>MediaWiki default</ip>
</contributor>
<text xml:space="preserve">i</text>
</revision>
</page>
<page> ... </page>
<page> ... </page>
...
</mediawiki>
このサイズのファイルの場合、iterparseを使用する必要があると思います。今のところ、タイトルを印刷しようとしていますが、次のコードを実行すると、「なし」と出力されます。
NS = '{http://www.mediawiki.org/xml/export-0.3/}'
from xml.etree.ElementTree import iterparse
with open('XMLFile.xml') as f:
for event, elem in iterparse(f):
if elem.tag == NS + 'page':
for node in elem:
if node.tag == NS + 'title':
print node.text()
elem.clear()