python2.7 BeautifulSoup3.2.0 findAll报错

import urllib2
from BeautifulSoup import BeautifulSoup
url = "http://springerlink.com"
req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"})
webpage= urllib2.urlopen(req)
parser = webpage.read()
soup = BeautifulSoup(parser)
top_div = soup.find('div', {'id':'a'}) #注意:返回的是list对象
aa_div = top_div.findAll('div', {'class':'aa'}) #同样是list对象
报错:
Traceback (most recent call last):
File "E:\eclipse-workspace\Test\src\Web\urllib2s\urllib_1.py", line 18, in <module>
aa_div = top_div.findAll('div') #同样是list对象
AttributeError: 'NoneType' object has no attribute 'findAll'

新手,不知道是BeautifulSoup安装问题还是版本问题。。。
BeautifulSoup安装:
下载后解压, 然后进入目录执行 :
1, python setup.py build
2, python setup.py install
忘了说了:Windows xp系统

AttributeError: 'NoneType' object has no attribute 'findAll'
意思是:
此处的top_div是个空值,即在Python中是None,所以是NodeType
对于一个None的值,当然没有对应的findAll的方法了
(只有正常的,非空的BeautifulSoup类型的变量才有此方法)

所以推出:
soup.find('div', {'id':'a'})
获得值top_div是空的

原因:
要么是你处理的html源码,此处即parser,得到的不是你真正想要的
要么是,你此处写的规则,即'div', {'id':'a'},有问题
(后来去该网站看了看其源码,根本就不存在
类似于

<div id="a">
的源码,所以很明显,你此处的规则是写错了)

才导致搜索出来的值,是空的。

另外,
针对于你说的:
top_div = soup.find('div', {'id':'a'})
“#注意:返回的是list对象”
我表示很怀疑。
因为本身BeautifulSoup类型变量去find的话,只会返回一个BeautifulSoup的对象
而不会是list。
这点是人家的find函数决定的,决定了返回值的类型不是list而是BeautifulSoup类型的变量。
你为何会说成list???

如果对于BeautifulSoup不熟悉,那可以参考我的教程:
搜:

【教程】Python中第三方的用于解析HTML的库:BeautifulSoup

即可找到。
温馨提示:答案为网友推荐,仅供参考
相似回答