gpt4 book ai didi

python - 如何用beautifulsoup抓取h4中的数据?

转载 作者:行者123 更新时间:2023-12-01 07:18:10 26 4
gpt4 key购买 nike

我正在尝试从该网站( https://www.ufc.com/matchup/908/7717/post )抓取结果数据,但我完全不知道为什么我提出的解决方案不起作用。

我试图抓取的外部 html 是 <h4 class="e-t5 winner">Jon Jones</h4> 。我在网页抓取或 HTML 方面没有太多经验,但所有相关信息都包含在 h4 中。标签。

我已经成功从 h2 中提取数据标签,但我很困惑为什么同样的方法不适用于 h4 。例如从<h2 class="field--name-name name_given red">Jon Jones <span class="field--field-rank rank"></span></h2>中提取相关数据以下代码有效。

from requests import get
from bs4 import BeautifulSoup

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
}
raw_html = get('https://www.ufc.com/matchup/908/7717/post', headers=headers)
html = BeautifulSoup(raw_html.content)

# this works
html.find_all('h2', attrs={'class': 'field--name-name name_given red'})[0].get_text().strip()

# this does not work?
html.find_all('h4', attrs={'class': 'e-t5 winner red'})

# this code gets me to the headers but not the actual listed data inside
html.find('div', attrs={'class': 'l-flex--4col-2to4'})

我最困惑的是为什么上面的方法不起作用,以及为什么我在浏览器中检查元素时看到的文本没有出现在抓取的 HTML 中。

最佳答案

它是动态添加的。您可以在网络选项卡中找到源。假设总是有一个获胜者,您可以使用类似的东西

import requests

r = requests.get('https://dvk92099qvr17.cloudfront.net/V1/908/Fnt.json').json()
winner = [fighter['FullName'] for fighter in r['FMLiveFeed']['Fights'][0]['Fighters'] if fighter['Outcome'] == 'Win'][0]
print(winner)

关于python - 如何用beautifulsoup抓取h4中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57844657/

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