'NoneType'对象在BeautifulSoup中使用'find_all'无法调用

时间:2014-10-10 05:52:27

标签: python beautifulsoup

这是我的代码,使用find_all,但它适用于.find():

import requests
from BeautifulSoup import BeautifulSoup

r = requests.get(URL_DEFINED)
print r.status_code

soup = BeautifulSoup(r.text)
print soup.find_all('ul')

这就是我得到的:

Traceback (most recent call last):


File "scraper.py", line 19, in <module>
    print soup.find_all('ul')
TypeError: 'NoneType' object is not callable

2 个答案:

答案 0 :(得分:6)

看起来你正在使用BeautifulSoup版本3,它使用了略微不同的命名约定,例如:.findAll,而BeautifulSoup 4标准化命名更像PEP8,例如:.find_all(但是保持较旧的命名以实现向后兼容性)。请注意,soup('ul')相当于在两者上找到所有

要下载并安装,请使用pip install beautifulsoup4

然后将导入更改为:

from bs4 import BeautifulSoup

然后你很高兴。

答案 1 :(得分:1)

从这里下载BS4。 http://www.crummy.com/software/BeautifulSoup/#Download

安装它并将其导入代码的开头,如下所示:

import requests
from bs4 import BeautifulSoup

r = requests.get(URL_DEFINED)
print r.status_code

soup = BeautifulSoup(r.text)
print soup.find_all('ul')