如何使用Selenium在体育网站上导航以获取Web上的Soccer Player Prop数据?

我是编码和尝试学习如何使用Selenium浏览网站的新手。我的最终目标是解析Soccer Player Prop数据player props,以便使用Pandas DataFrame将输出打印到excel。

为了访问此信息,我相信我必须先完成4个步骤(如果我输入错了,请纠正我):

1)在播放器道具页面上选择“ OVER / UNDER”标签

2)向下滚动到“冠军联赛”(UCL)

3)选择选项“所有游戏都可用(在所有游戏中)”

4)选择标签“射击(播放器)”

如何使用Selenium在体育网站上导航以获取Web上的Soccer Player Prop数据?

我使用Xpath找到了“上方/下方”按钮:

更新代码以更改iframe,然后单击上/下按钮

 from selenium import webdriver
 from time import sleep


 class App:
     def __init__(self,):

         self.driver = webdriver.Chrome('C:\webdrivers\chromedriver.exe')
         self.main_url = 'https://www.betonline.ag/sportsbook/player-props'
         self.driver.get(self.main_url)
         sleep(3)

         self.driver.switch_to.frame("builder")
         element = self.driver.find_element_by_xpath('/html/body/main/div/div/div/div/div[2]/div/div[3]/div[1]/ul/li[3]/a/b')
         element.click()

         sleep(3)
         self.driver.close()

 if __name__ == '__main__':
     app = App()

我现在可以选择“上方/下方”标签。接下来,我将开始第2-4步的工作。

我要查找的“足球道具”数据是“玩家”,“上方”,“线”和“下方”。

以下是我正在寻找的excel输出示例:

  Player               Over         Line          Under

Divock Origi          -108          3.5          -120

我希望创建一个循环,以便我可以解析所有玩家的下注信息。

我可以在代码中看到上/下按钮,但不确定如何正确解析:

如何使用Selenium在体育网站上导航以获取Web上的Soccer Player Prop数据?

我还可以看到播放器数据:

如何使用Selenium在体育网站上导航以获取Web上的Soccer Player Prop数据?

有人对我如何完成这个项目有任何建议吗?任何帮助将不胜感激。我将继续努力,并在取得任何其他进展时更新我的​​代码。非常感谢您的投入!

mars00721 回答:如何使用Selenium在体育网站上导航以获取Web上的Soccer Player Prop数据?

您能否发布完整的html树以查看您的路径是否正确?

编辑:自己查一下。 尝试此按钮

element = self.driver.find_element_by_css_selector('main div div div div div div div div ul li+li+li a ')
,

请仔细检查网页上是否存在iframe,您需要先切换到iframe,然后才能对网络元素执行任何操作。

请找到用于切换更多详细信息的链接: https://chercher.tech/python/iframe-selenium-python

enter image description here

,

这是在dataframe中显示数据的代码。

import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

driver=webdriver.Chrome("C:\webdrivers\chromedriver.exe")
driver.maximize_window()
driver.get("https://www.betonline.ag/sportsbook/player-props")
WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"builder")))
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//li[@class='one-third one-third-remove']//a[./b[contains(.,'Over / Under')]]"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div[ng-if='selected.league']"))).click()
WebDriverWait(driver,"//li[@ng-repeat='league in leagues']/a[.//span[text()='UCL']]"))).click()
WebDriverWait(driver,"div[ng-if^='selected.game']"))).click()
time.sleep(2)
WebDriverWait(driver,"//li/a[.//div[text()='All Available']]"))).click()
#WebDriverWait(driver,"//span[contains(.,'Shots (Player)')]"))).click()


player=[]
Over=[]
line=[]
Under=[]
Playersname=WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.XPATH,"//div[@class='div-table__row__cell hard--bottom hard--right ng-scope']//a[@class='ng-binding']")))
for players in Playersname:
    player.append(players.text)

OverAndUnder=WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"a>b.milli.caps.ng-binding")))
count=int(len(OverAndUnder)/2)
x=0
for i in range(count):
    Over.append(OverAndUnder[x].text)
    Under.append(OverAndUnder[x+1].text)
    x=x+2

lines=WebDriverWait(driver,"div[ng-class*='overUnder']>b")))
for l in lines:
    line.append(l.text)

df = pd.DataFrame({"Player":player,"Over":Over,"Line":line,"Under":Under})
print(df)

输出

 Line  Over           Player Under
0   3.5  +114     Divock Origi  -149
1   1.5  -149      Dusan Tadic  +114
2     3  -114    Gabriel Jesus  -114
3   2.5  -167     Hakim Ziyech  +127
4   2.5  -114     Josip Ilicic  -114
5   2.5  +114      Mason Mount  -149
6   1.5  -108   Mbwana Samatta  -120
7   4.5  -137    Mohamed Salah  +106
8   2.5  +110       Papu Gomez  -143
9   1.5  +122     Paul Onuachu  -159
10  1.5  -149    Quincy Promes  +114
11  2.5  -114  Raheem Sterling  -114
12    4  +114  Roberto Firmino  -149
13  3.5  -149       Sadio Mané  +114
14  3.5  +117    Sergio Agüero  -152
15  3.5  -120    Tammy Abraham  -108
16  2.5  +127          Willian  -167
本文链接:https://www.f2er.com/3161777.html

大家都在问