python'NonType'对象没有属性'findAll'

时间:2017-06-27 09:18:52

标签: python bs4

print(bsObj.find(id="mv-content-text").findAll("p")[0])

我使用python3.6练习scrapy。代码来自Pyhon的Web Scraping。为什么不能使用find。()。findAll()

1 个答案:

答案 0 :(得分:0)

您的find(...)已返回无,因为在bsObj中未找到id=mv-content-text的标记。

您只能在bs4对象上调用findAll。您可以使用typehasattr的组合来浏览此处发生的事情,以查看REPL中返回的值

>>> from bs4 import BeautifulSoup

>>> doc = ['<html><head><title>Page title</title></head>',
...        '<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
...        '<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
...        '</html>']
... 

>>> soup = BeautifulSoup(''.join(doc), "lxml")

>>> tag = soup.find(id="firstpara")

>>> tag
<p align="center" id="firstpara">This is paragraph <b>one</b>.</p>

>>> type(tag)
bs4.element.Tag

>>> hasattr(tag, 'findAll')
True

尝试相同,但使用HTML汤中不存在的标记

>>> other = soup.find(id="non-existant")

>>> other

>>> type(other)
NoneType

>>> hasattr(other, 'findAll')
False