Bs4和Python请求

Bs4和Python请求,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我试图制作一个pokedex(),我想从这里得到口袋妖怪的描述pokename表示口袋妖怪的名字。例如: 有一个标记包含描述,p标记的类是:version xactive 当我打印描述时,我什么也得不到,或者有时一个也得不到 代码如下: 导入请求 从bs4导入BeautifulSoup #分配URL url=”https://www.pokemon.com/us/pokedex/“+text\u id\u name.get(1.0,“end-1c”) #获取原始HTML内容 html\u con

我试图制作一个pokedex(),我想从这里得到口袋妖怪的描述pokename表示口袋妖怪的名字。例如:

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

当我打印描述时,我什么也得不到,或者有时一个也得不到

代码如下:

导入请求
从bs4导入BeautifulSoup
#分配URL
url=”https://www.pokemon.com/us/pokedex/“+text\u id\u name.get(1.0,“end-1c”)
#获取原始HTML内容
html\u content=requests.get(url).text
#现在内容已经准备好了,请迭代
#通过使用BeautifulSoup的内容:
soup=BeautifulSoup(html\u内容,“html.parser”)
#类似地,获取给定标记的所有出现次数
打印(soup.find('p',attrs={'class':'version xactive'}).text)
text\u id\u name.get(1.0,“end-1c”)
来自tkinter文本输入

它表明:

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'

提前谢谢

你应该把电话分开,这样你就可以进行安全检查和类型检查了

替换

print(soup.find('p', attrs={'class': 'version-xactive'}).text)


这至少会给你更多的信息。它可能仍然会在
标记上中断。text
。如果有,请将
print(“Tags:,Tags)
的打印输出向上,这样我们就可以看到数据的样子。

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

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

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

description = soup.find('p', attrs={'class': 'version-x active'})
if description:
    print(desription.text)
description = soup.find('p', attrs={'class': 'version-x active'})
if description:
    print(desription.text)