Web scraping 属性错误:';非类型';对象没有属性';文本';|美丽之群
错误: AttributeError:“非类型”对象没有属性“文本”Web scraping 属性错误:';非类型';对象没有属性';文本';|美丽之群,web-scraping,beautifulsoup,python-3.8,Web Scraping,Beautifulsoup,Python 3.8,错误: AttributeError:“非类型”对象没有属性“文本” 错误告诉我们,soup.find(“div”,“class”:“fi-p\u profile number\uu number”})未找到任何内容。并且没有任何东西(None或NoneType)不能有任何属性 顺便说一下,您提供的链接返回404错误。您似乎试图在没有请求数据的情况下解析页面。啊,好的。我懂了。你的网址错了。首先,您需要删除.html。其次,您需要找到能够实际获取数据的URL。不幸的是,没有API端点(我可以在这
错误告诉我们,
soup.find(“div”,“class”:“fi-p\u profile number\uu number”})
未找到任何内容。并且没有任何东西(None或NoneType)不能有任何属性
顺便说一下,您提供的链接返回404错误。您似乎试图在没有请求数据的情况下解析页面。啊,好的。我懂了。你的网址错了。首先,您需要删除
.html
。其次,您需要找到能够实际获取数据的URL。不幸的是,没有API端点(我可以在这里看到)来获取播放器数据
所以稍微有点不同的方法是访问每个玩家的个人资料,然后按这种方式拉出来。但是,为了获得玩家配置文件,需要playerID进行迭代。这将需要一段时间才能运行,因为它需要从每个播放器配置文件/url中提取,但要完成任务:
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession
#Request URL
page = requests.get('https://www.fifa.com/worldcup/players.html')
#Fetch webpage
soup = BeautifulSoup(page.content,"html.parser")
player_age = soup.find("div",{"class":"fi-p__profile number__number"}).text.replace("\n","").strip()
print(player_age)
输出:
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'}
#Get playerIDs
url = 'https://www.fifa.com/worldcup/players/_libraries/byposition/all/_players-list'
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.text,"html.parser")
playerIDs = soup.find_all('a', {'class':'fi-p--link '})
playerDict = {}
for player in playerIDs:
name = player.find('div',{'class':'fi-p__name'}).text.strip()
playerID = player['data-player-id']
playerDict[name] = playerID
for player_name, playerID in playerDict.items():
#Request URL
url = 'https://www.fifa.com/worldcup/_libraries/players/player/%s/_player-profile-data' %playerID
page = requests.get(url, headers=headers)
#Fetch webpage
soup = BeautifulSoup(page.text,"html.parser")
player_age = soup.find('div',{'class':'fi-p__profile-number__number'}).text.strip()
print('%-20s Age: %s' %(player_name, player_age))
你在哪里找到那个网址的?这是无效的。你想做什么?请找到正确的url:,我试图提取每个球员的信息,如球员姓名、国家、年龄等。你看不到我下面的解决方案吗?
Aaron MOOY Age: 29
ABDALLA SAID Age: 34
Abdiel ARROYO Age: 26
Abdoulaye DIALLO Age: 27
ABDULLAH ALKHAIBARI Age: 23
ABDULLAH ALMUAIOUF Age: 33
ABDULLAH OTAYF Age: 27
Abdullahi SHEHU Age: 26
ABDULMALEK ALKHAIBRI Age: 33
Abel AGUILAR Age: 35
Achraf HAKIMI Age: 21
Adama MBENGUE Age: 26
Adem LJAJIC Age: 28
Adil RAMI Age: 34
Adnan JANUZAJ Age: 25
Adolfo MACHADO Age: 34
ADRIEN SILVA Age: 30
AHMED ELMOHAMADY Age: 32
AHMED FATHI Age: 35
...