使用findAll时BeautifulSoup总是返回null
我正在尝试使用BeautifulSoup来解析一些网页,但每次我用findAll的时候,它总是返回空值,尽管我可以正常访问像soup.title这样的内容。
我现在正在尝试解析这个链接,但是当我尝试对它进行操作时,得到的结果是:
>>> site = urllib2.urlopen('http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&IsNodeId=1&Description=nvidia%20gtx%20560%20ti&bop=And&Order=PRICE&PageSize=20')
>>> soup = BeautifulSoup(site)
>>> soup.title
<title>Newegg.com - nvidia gtx 560 ti</title>
>>> soup.findAll('title')
Null
>>>
有没有人知道为什么会这样?我使用的是BeautifulSoup 2.1.1版本。
1 个回答
1
你正在使用一个旧版本的BeautifulSoup,这个版本没有findAll
这个方法。我记得旧版本里类似的功能叫做fetch
。findAll
这个方法是在BeautifulSoup 3.0.0版本中新增的,那时候方法的命名变得更统一了。从文档中可以看到:
以前的Beautiful Soup版本有一些方法,比如first、fetch和fetchPrevious。这些方法现在仍然存在,但已经被标记为不推荐使用,可能很快就会被删除。所有这些名字的组合让人感到很困惑。新的命名方式更一致:如上所述,如果方法名是复数或者提到“All”,那么它会返回多个对象。否则,它只会返回一个对象。