[英]Python BeautifulSoup giving different results
我正在尝试使用BeautifulSoup
解析xml
文件。 考虑如下的sampleinpt xml
文件:
<DOC>
<DOCNO>1</DOCNO>
....
</DOC>
<DOC>
<DOCNO>2</DOCNO>
....
</DOC>
...
该文件包含130个<DOC>
标记。 但是,当我尝试使用BeautifulSoup的findAll
函数解析它时,它会检索随机数量的标签(通常在15到25之间),但是从不检索130。我使用的代码如下:
from bs4 import BeautifulSoup
z = open("filename").read()
soup = BeautifulSoup(z, "lxml")
print len(soup.findAll('doc'))
#more code involving manipulation of results
有人可以告诉我我在做什么错吗? 提前致谢!
您正在告诉BeautifulSoup使用lxml
提供的HTML解析器。 如果您有XML文档,则应坚持使用XML解析器选项:
soup = BeautifulSoup(z, 'xml')
否则,解析器将尝试“修复” XML以适合HTML规则。 BeautifulSoup中的XML解析也由lxml
库处理。
请注意,XML 区分大小写,因此您现在需要搜索DOC
元素。
对于XML文档, 可能是lxml
提供的ElementTree API更具生产力。 例如,它支持XPath查询,而BeautifulSoup不支持。
但是,从您的样本中看来,似乎没有一个顶级元素 。 好像您的文档由一整套XML文档组成。 这使您的输入无效 ,并且解析器可能只坚持将第一个元素解析为顶级文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.