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 '*'
答案 0 :(得分:0)
编辑:我发现'findAll'是相对于当前节点的,你可以用汤来设置根节点。
提供的xml中的实体名为“PubMedArticle”,因此请尝试以下操作:
for x in soup.pubmedarticleset.findAll('pubmedarticle'):
print '*'
答案 1 :(得分:0)
我通过添加xml
参数解决了这个问题。确保已安装lxml
。
soup = BeautifulSoup(xmlData, 'xml')