我是一个新的网络抓取编码器。
我的代码是:
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
答案 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