У меня есть очень большой (7 ГБ) XML-дамп MediaWiki, который состоит из записей о каждом изменении, сделанном на каждой странице 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()