1
我想解析一下維基教科書的XML轉儲,但可能我錯過了一些東西,因爲我沒有得到任何輸出。解析MediaWiki wiki的XML轉儲
這是一個類似但更短的xml文件:
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.8/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.8/ http://www.mediawiki.org/xml/export-0.8.xsd" version="0.8" xml:lang="it">
<page>
<title>bigoto</title>
<ns>0</ns>
<id>24840</id>
<revision>
<id>1171207</id>
<parentid>743817</parentid>
<timestamp>2011-12-18T19:26:42Z</timestamp>
<contributor>
<username>GnuBotmarcoo</username>
<id>14353</id>
</contributor>
<minor />
<comment>[[Wikizionario:Bot|Bot]]: Sostituisco template {{[[Template:in|in]]}}</comment>
<text xml:space="preserve">== wikimarkups ==</text>
<sha1>gji6wqnsy6vi1ro8887t3bikh7nb3fr</sha1>
<model>wikitext</model>
<format>text/x-wiki</format>
</revision>
</page>
</mediawiki>
我在,如果<ns>
元素等於解析<title>
元素的內容感興趣0
這是我的腳本
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for page in root.findall('page'):
ns = int(page.find('ns').text)
word = page.find('title').text
if ns == 0:
print word
這適用於小型XML文件。但是當我解析長(128mb)xml轉儲文件時,腳本崩潰......或者列表中我認爲崩潰了,因爲它在兩個多小時後沒有完成任務。有沒有什麼策略讓它處理非常大的文件? – CptNemo 2013-05-14 10:30:36
啊,BeautifulSoup在使用大文件時的速度往往非常慢 - 在這種情況下,您可能需要使用'lxml'。你可以在「lxml」XML解析器的頂部運行BeautifulSoup - 我已經更新了我的迴應,以顯示在BeautifulSoup構造函數中如何實現,並添加了「xml」作爲第二個參數。 – jdotjdot 2013-05-14 12:30:07
現在,我得到錯誤:TypeError:不支持的操作數類型爲+:'NoneType'和''str':'='BS(open(「itwiktionary-20130507-pages-articles.xml」)) 「XML」)'。難道我做錯了什麼? – CptNemo 2013-05-14 22:46:18