繁体   English   中英

美丽的汤:find()函数

[英]Beautiful Soup: find() function

url = url_stub % (stat_id, starting_year)
page = requests.get(url)
html = BeautifulSoup(page.text.replace('n', ''), 'html.parser')
stat = html.find("div", class_="parsys mainParsys section").find('h3').text

我正在尝试使用BeautifulSoup对象并使用find()函数,但是我不断收到“ AttributeError:'NoneType'对象没有属性'find'”。 我究竟做错了什么?

@jasonharper是正确的。 您可以考虑使用异常处理或将该链分成多个部分,以检查是否从html.find("div", class_="parsys mainParsys section")

为了更好地解决此问题,您需要修改代码。 这将帮助您查找代码的哪些部分失败。 但是我也希望将html类缩小到单个html类进行测试,然后如果这是问题之一,找出如何向find函数添加多个类名

先尝试一下。 如果失败,请尝试使用单个html类名称。

url = url_stub % (stat_id, starting_year)
page = requests.get(url)
html = BeautifulSoup(page.text.replace('n', ''), 'html.parser')

print('before stat')
stat = html.find("div", class_="parsys mainParsys section")
print('stat worked')
print('before data')
data = stat.find('h3').text
print('after data')

编辑:而且class_可能不会称为class_,而只是class

正如@jasonharper指出的,这是因为第一个.find()找不到任何东西。 为了避免该错误,您必须验证您的第一个和第二个发现是否找到了任何东西:

if html.find("div", class_="parsys mainParsys section"):
     if html.find("div", class_="parsys mainParsys section").find('h3'):
         stat = html.find("div", class_="parsys mainParsys section").find('h3').text
     else:
         stat=None
else:
    stat = None

我偶然发现了您正在使用的相同功能和项目。 您必须更改:

stat = html.find("div", class_="parsys mainParsys section").find('h3').text

stat = html.find("div", class_="parsys mainParsys").find('h3').text

另外,如果您使用的是3.6版本,则必须更新:

import urllib.request
urllib.request.urlretrieve(url, filename)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM