Python3从体育网站提取html数据

2024-07-07 08:47:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图从一个体育网站上提取数据,但到目前为止失败了。我正试图抽出35次射门和23次射门,但都失败了

<div class="statTextGroup"> <div class="statText statText--homeValue">35</div> <div class="statText statText--titleValue">Shots on Goal</div> <div class="statText statText--awayValue">23</div></div>
from bs4 import BeautifulSoup
import requests

result = requests.get("https://www.scoreboard.com/uk/match/lvbns58C/#match-statistics;0")
src = result.content

soup = BeautifulSoup(src, 'html.parser')

stats = soup.find("div", {"class": "tab-statistics-0-statistic"})
print(stats)

这是我一直试图使用的代码,当我运行它时,我得到“无”打印给我。有人能帮我把数据打印出来吗

在此处找到完整页面:https://www.scoreboard.com/uk/match/lvbns58C/#match-statistics;0


Tags: 数据httpsimportdivcomwwwmatchresult
1条回答
网友
1楼 · 发布于 2024-07-07 08:47:45

由于网站由javascript呈现,可能的选项是使用selenium加载页面,然后使用BeautifulSoup解析:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

# initialize selenium driver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(' headless')
chrome_options.add_argument(' no-sandbox')
chrome_options.add_argument(' disable-dev-shm-usage')
wd = webdriver.Chrome('<<PATH_TO_SELENIUMDRIVER>>', options=chrome_options)

# load page via selenium
wd.get("https://www.scoreboard.com/uk/match/lvbns58C/#match-statistics;0")

# wait 30 seconds until element with class mainGrid will be loaded
table = WebDriverWait(wd, 30).until(EC.presence_of_element_located((By.ID, 'statistics-content')))

# parse content of the table
soup = BeautifulSoup(table.get_attribute('innerHTML'), 'html.parser')

print(soup)

# close selenium driver
wd.quit()

相关问题 更多 >