我正在解析一个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快得多。 –