gpt4 book ai didi

python - 如何从 HTML 表格中获取文本?

转载 作者:行者123 更新时间:2023-11-28 02:20:13 26 4
gpt4 key购买 nike

我正在尝试从 https://fortnitetracker.com/events/epicgames_S10_FNCS_Week5_NAE 中抓取数据.具体来说,我正在尝试获取特定玩家获得的排名和积分数。我去了该网站,找到了特定播放器(“Nickmercs”)位于 HTML 中的实例,如下所示: HTML Text你可以看到“排名”在他的名字上方显示为 56,分数在他的名字下方几行显示,他的名字也是 56。然后我编写了以下 Python 3 程序来从网站上抓取数据:

import requests

class tracker:

url = "https://fortnitetracker.com/events/epicgames_S10_FNCS_Week5_NAE"

def getReq(website):
req = requests.get(website)
if req:
return req

req = getReq(url)
text = req.text
index = text.find("nickmercs")
split = text[index:index+1000]
print (split)

运行该程序会生成大部分 HTML 代码,但它找到的“Nickmercs”实例并不是我要找的那个。上面显示的 HTML 代码图片中显示的是实际的第一个实例,如果页面上的“Nickmercs”字符串,但由于某种原因它不在 req.text/我的请求的响应中。结果我回去修改我的代码,打印出第一个实例实际所在的位置,发现该行与 HTML 代码图片中显示的不同。应该列出名称“Nate Hill、Nickmercs、SypherPK”的那一行实际上看起来像这样:

<span :style="{ 'color': '#' + metadata.primary_color }">{{ getPlayerNameList(entry.teamAccountIds, 4) }}</span>

我对 HTML 的工作原理知之甚少,所以我想知道是否可以解决这个问题。它似乎在调用一些(我想象的是)名为 getPlayerNameList() 的方法,该方法将名称放在正确的位置,但这样做是为了让我无法轻松搜索名称/抓取数据。有办法解决这个问题吗?非常感谢任何帮助!

最佳答案

网站是动态的,因此,您需要某种方式来访问页面最初加载后填充的数据。一种这样的方法是使用 selenium:

from selenium import webdriver
from bs4 import BeautifulSoup as soup
d = webdriver.Chrome('/path/to/chromedriver')
d.get('https://fortnitetracker.com/events/epicgames_S10_FNCS_Week5_NAE')
h, *r = [[i.text for i in b.find_all('th' if b.td is None else 'td')] for b in soup(d.page_source, 'html.parser').find('div', {'id':'leaderboard'}).table.find_all('tr')]
new_data = {tuple(b.split(', ')):dict(zip([h[0], *h[2:]], [a[1:-1], *c])) for a, b, *c in r}

现在,按名字查找玩家:

data = [b for a, b in new_data.items() if 'Nickmercs' in a][0]

输出:

{'Rank': '56', 'Points': '56 Top 0.373%', 'Matches': '10', 'Wins': '0', 'K/D': '3.50', 'Avg Place': '16.10'}

对于你的具体目标值(Rank):

rank = [b for a, b in new_data.items() if 'Nickmercs' in a][0]['Rank']

输出:

56

关于python - 如何从 HTML 表格中获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58127370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com