1

BeautifulSoup 中的findAll()方法不会返回 XML 中的所有元素。如果查看下面的代码并打开 URL,您可以看到 XML 中有 10 个PubmedArticle节点。但是 findAll 方法只能找到其中的 6 个。输出上只有 6 * 而不是 10。我做错了什么?

import urllib2
from bs4 import BeautifulSoup

URL = 'http://www.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&rettype=abstract&id=23858559,23858558,23858557,23858521,23858508,23858506,23858494,23858473,23858461,23858404'
data = urllib2.urlopen(URL).read()

soup = BeautifulSoup(data)

for x in soup.findAll('pubmedarticle'):
    print '*'
4

2 回答 2

0

编辑:我发现'findAll'是相对于当前节点的,你可以用soup设置根节点。

提供的 xml 中的实体名为“PubMedArticle”,因此请尝试以下操作:

for x in soup.pubmedarticleset.findAll('pubmedarticle'):
    print '*'
于 2013-07-17T18:43:57.873 回答
0

我通过添加xml参数解决了这个问题。确保您已lxml安装。

soup = BeautifulSoup(xmlData, 'xml')
于 2013-07-19T12:49:14.117 回答