我正在解析一個xml文件(150mb)的大小。爲此,因爲美麗的衣服是衆所周知的,所以我把它撿起來了。 XML格式是這樣的:使用BeautifulSoup從多個XML列表中提取文本數據
<tag>
<tag1>
<texttag>Some text</texttag>
</tag1>
</tag>
<tag>
<tag1>
<texttag>Some other text</texttag>
</tag1>
</tag>
我有2000個這樣的元素
。 由於根標籤是不是在這裏,所以我把它分解每個元素的主要標籤的基礎上,因爲它的同一和轉換成list(再次其中兩千元)。這是怎麼一回事呢:
import itertools as it
from bs4 import BeautifulSoup
filename = 'some.xml'
btree = BeautifulSoup(open(filename), "lxml-xml")
with open(filename,'r') as f:
for key,group in it.groupby(f,lambda line: line.startswith('tag')):
if not key:
group = list(group)
#print(group)
texttags= btree.find_all("texttag")
for text in texttags:
print (text.string)
在運行,而不是迭代到下一個元素,並顯示其文本等,它顯示的第一個元素的內容2000倍,而不是從所有提到的標籤的元素顯示文本的。有人可以糾正我嗎?
PS:我無法修改XML的結構。另外,我還是一個業餘愛好者,他們還在蟒蛇及其圖書館工作。
非常感謝@ t.m.adam。我確實得到了我的結果,但需要一段時間。我的意思是我的xml文件絕不是一個小文件,但您仍然可以提出任何建議來提高獲得結果的速度嗎? –
如果你只是想提取字符串使用在我的崗位第一代碼片段;並使用'lxml'而不是'html.parser'。如果您只對某個標籤感興趣,請考慮使用正則表達式,它比bs4快得多。 –