' NoneType'当我学习网页抓取时,对象不可调用

时间:2017-01-12 13:39:50

标签: python web-scraping

我是一个新的网络抓取编码器。

我的代码是:

from urllib2 import urlopen
from bs4 import BeautifulSoup
html=urlopen("http://www.pythonscraping.com/pages/warandpeace.html")
bsObj=BeautifulSoup(html,"html.parser")
namelist=bsObj.findall("span",{"class":"green"})
for name in namelist:
    print(name.get_text())

控制台就是这样:

Traceback (most recent call last):   File "F:\Eclipseworkspace\PythonLearn1_12\src\Test1\__init__.py", line 5, in <module>
    namelist=bsObj.findall("span",{"class":"green"}) TypeError: 'NoneType' object is not callable

2 个答案:

答案 0 :(得分:0)

我认为你只是犯了一个拼写错误,findAll是大写的A,或者你可以使用find_all(带下划线),这实际上是{{1}中应该使用的方法}}

您收到此错误的原因是因为bs4对象会将通用属性(不属于BeautifulSoup的属性视为dir(..) - 请求)。如果未找到查询,则会为每个未指定的查询属性返回find

None

所以现在你在>>> repr(bsObj.findall) 'None' 对象上调用(bsObj.findall(..)),这将无效。

答案 1 :(得分:0)

None

旧版本:namelist=bsObj.find_all("span",{"class":"green"})

新版本:findAll

错误的版本:find_all