Traceback (most recent call last): File "D:\Notepad++\b.py", line 62, in <module> playlists = get_playlists(soup) File "D:\Notepad++\b.py", line 34, in get_playlists playlist['collect_count'] = li.find('span', {'class': 'u-btni u-btni-fav '}).text AttributeError: 'NoneType' object has no attribute 'text'
时间: 2023-12-22 18:05:16 浏览: 63
这个错误和你之前提到的错误类似,是因为在代码的第34行中,`li.find('span', {'class': 'u-btni u-btni-fav '})` 返回了 `None`,也就是没有找到对应的元素。因此,当你尝试调用 `text` 属性时,会出现 'NoneType' object has no attribute 'text' 的错误。
你可以在调用 `text` 属性之前,先检查一下这个元素是否为 `None`。如果这个元素不存在,你可以将 `playlist['collect_count']` 设为默认值,例如 0。示例代码如下:
```
collect_element = li.find('span', {'class': 'u-btni u-btni-fav '})
if collect_element is not None:
playlist['collect_count'] = collect_element.text
else:
playlist['collect_count'] = 0
```
这样就可以避免出现 'NoneType' object has no attribute 'text' 的错误了。
相关问题
Traceback (most recent call last): File "D:\Notepad++\b.py", line 57, in <module> playlists = get_playlists(soup) File "D:\Notepad++\b.py", line 25, in get_playlists playlist['create_time'] = li.find('span', {'class': 's-fc3'}).text AttributeError: 'NoneType' object has no attribute 'text'
这个错误是因为有些歌单没有“创建时间”这个标签,导致 `li.find('span', {'class': 's-fc3'})` 返回了 `None`。你可以在获取这个标签的时候进行判断,如果返回值为 `None`,则将 `playlist['create_time']` 赋值为 “无创建时间” 或者其他你认为合适的值。修改后的 `get_playlists` 函数如下:
```python
def get_playlists(soup):
playlists = []
for li in soup.find('ul', {'class': 'm-cvrlst f-cb'}).find_all('li'):
playlist = {}
playlist['id'] = li.find('a')['href'].split('=')[1]
playlist['name'] = li.find('a')['title']
playlist['play_count'] = li.find('span', {'class': 'nb'}).text
create_time = li.find('span', {'class': 's-fc3'})
playlist['create_time'] = '无创建时间' if create_time is None else create_time.text
playlist['create_user'] = li.find('a', {'class': 'nm nm-icn f-thide s-fc3'})['title']
playlist['type'] = li.find('span', {'class': 's-fc4'}).text
playlist['update_time'] = li.find('span', {'class': 's-fc4'}).text
playlist['collect_count'] = li.find('span', {'class': 'u-btni u-btni-fav '}).text
playlist['song_count'] = li.find('span', {'class': 's-fc3'}).text
playlist['description'] = li.find('div', {'class': 'u-cover u-cover-1'}).text
playlist['comment_count'] = li.find('span', {'class': 'u-btni u-btni-cmmt '}).text
playlist['share_count'] = li.find('span', {'class': 'u-btni u-btni-share '}).text
playlists.append(playlist)
return playlists
```
这样修改后,即使有些歌单没有“创建时间”这个标签也不会报错了,而是会将 `playlist['create_time']` 赋值为 “无创建时间”。
Traceback (most recent call last): File "D:\Notepad++\b.py", line 66, in <module> playlists = get_playlists(soup) File "D:\Notepad++\b.py", line 39, in get_playlists playlist['song_count'] = li.find('span', {'class': 's-fc3'}).text AttributeError: 'NoneType' object has no attribute 'text'
这个错误也和之前提到的错误类似,是因为在代码的第39行中,`li.find('span', {'class': 's-fc3'})` 返回了 `None`,也就是没有找到对应的元素。因此,当你尝试调用 `text` 属性时,会出现 'NoneType' object has no attribute 'text' 的错误。
你可以在调用 `text` 属性之前,先检查一下这个元素是否为 `None`。如果这个元素不存在,你可以将 `playlist['song_count']` 设为默认值,例如 0。示例代码如下:
```
song_count_element = li.find('span', {'class': 's-fc3'})
if song_count_element is not None:
playlist['song_count'] = song_count_element.text
else:
playlist['song_count'] = 0
```
这样就可以避免出现 'NoneType' object has no attribute 'text' 的错误了。
阅读全文