首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bs4和requests

Bs4和requests
EN

Stack Overflow用户
提问于 2021-04-28 04:13:40
回答 2查看 147关注 0票数 0

我试图制作一个https://replit.com/@Yoplayer1py/Gui-Pokedex,我想从}那里得到口袋妖怪的描述,pokename的意思是口袋妖怪的名字。例如:https://www.pokemon.com/us/pokedex/unown

有一个标签包含描述,而p标记的类是: version-xactive。

当我打印描述的时候,我什么也得不到,有时什么也没有。

下面是代码:

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

# Assign URL
url = "https://www.pokemon.com/us/pokedex/"+text_id_name.get(1.0, "end-1c")
    
# Fetch raw HTML content
html_content = requests.get(url).text
    
# Now that the content is ready, iterate 
# through the content using BeautifulSoup:
soup = BeautifulSoup(html_content, "html.parser")
    
# similarly to get all the occurences of a given tag
print(soup.find('p', attrs={'class': 'version-xactive'}).text)

text_id_name.get(1.0, "end-1c")来自tkinter文本输入。

它表明:

代码语言:javascript
复制
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
    return self.func(*args)
  File "main.py", line 57, in load_pokemon
    print(soup.find('p', attrs={'class': 'version-xactive'}).text)
AttributeError: 'NoneType' object has no attribute 'text'

提前谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-28 04:46:08

看起来,描述的多个类是version-x active (至少对于乌诺)。这就是为什么soup.find('p', attrs={'class': 'version-xactive'}没有找到元素,从而返回None (因此您得到了错误)。

添加一个空格将解决您的问题:print(soup.find('p', attrs={'class': 'version-xactive'}).text)。注意:如果有多个具有相同类的p元素,那么find方法可能不会返回您想要的元素。

添加空检查还将防止错误发生:

代码语言:javascript
复制
description = soup.find('p', attrs={'class': 'version-x active'})
if description:
    print(desription.text)
票数 0
EN

Stack Overflow用户

发布于 2021-04-28 04:43:27

你应该把你的电话分开,这样你就可以做一个安全检查和一个类型检查。

替换

代码语言:javascript
复制
print(soup.find('p', attrs={'class': 'version-xactive'}).text)

使用

代码语言:javascript
复制
tags = soup.find('p', attrs={'class': 'version-xactive'})
print("Tags:", tags)
if(type(tags) != NoneType):
    print(tags.text)

至少应该给你更多的信息。它可能仍然会在tags.text上崩溃。如果是的话,就把print("Tags:", tags)的打印输出放到上面,这样我们就可以看到数据是什么样子的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67293685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档