Python 2.7 BeautifulSoup中的findAll()缺少节点
BeautifulSoup中的方法findAll()不会返回XML中的所有元素。如果查看下面的代码并打开URL,可以看到XML中有10个PubmedArticle节点。然而findAll方法只能找到其中的6个。输出上只有6个*而不是10个。我做错了什么Python 2.7 BeautifulSoup中的findAll()缺少节点,python-2.7,beautifulsoup,findall,Python 2.7,Beautifulsoup,Findall,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&re
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 '*'
编辑:我发现'findAll'是相对于当前节点的,您可以使用soup设置根节点 提供的xml中的实体名为“PubMedArticle”,请尝试以下操作:
for x in soup.pubmedarticleset.findAll('pubmedarticle'):
print '*'
我通过添加
xml
参数解决了这个问题。确保已安装lxml
soup = BeautifulSoup(xmlData, 'xml')
是的,我知道。但如果我这么做,我就什么也得不到。所以我故意使用小写字母。你的代码对我有效,并打印10个字符。试着将
lxml
解析器与beautifulsoup一起使用:soup=beautifulsoup(data,“lxml”)
(确保安装了lxml
)。在这种情况下,为什么不直接使用lxml?^^(撇开玩笑不谈,它有一个很棒的xpath支持)。