【发布时间】:2021-06-13 15:13:26
【问题描述】:
我正在尝试从 ESPN 上抓取一些数据,并对抓取的数据进行一些计算。理想情况下,我想遍历一个数据框,用 Selenium 获取玩家的名字,将玩家的名字发送到搜索框中,然后告诉 Selenium 点击玩家的名字。我能够与一名球员成功地做到这一点。我不太确定如何遍历数据框中的所有玩家。
代码的第二部分是我苦苦挣扎的地方。由于某种原因,我无法获取数据。 Selenium 无法找到任何元素。我不认为我做得很好。如果我能够抓取所需的数据,我希望将它们插入计算并将计算出的投影点附加到我的数据框 dfNBA。
有人可以帮我写代码吗?并指出我正确的方向。我正在努力提高编写 Python 代码的效率,但现在我被困住了
谢谢
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
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
#sample data
pp = {'Player Name':['Donovan Mitchell', 'Kawhi Leonard', 'Rudy Gobert', 'Paul George','Reggie Jackson', 'Jordan Clarkson'],
'Fantasy Score': [46.0, 50.0, 40.0, 44.0, 25.0, 26.5]}
#Creating a dataframe from dictionary
dfNBA = pd.DataFrame(pp)
#Scraping ESPN
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://www.espn.com/")
#Clicking the search button
driver.find_element_by_xpath("//a[@id='global-search-trigger']").click()
#sending data to the search button
driver.find_element_by_xpath("//input[@placeholder='Search Sports, Teams or Players...']").send_keys(dfNBA.iloc[0,:].values[0])
WebDriverWait(driver, 20).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".search_results__details")))
playerPage = driver.find_element_by_css_selector(".search_results__details").click()
#Scraping data from last 10 games
points = driver.find_element_by_xpath(".//div[@class='Table__TD']")[13]
#rebs = driver.find_element_by_xpath("//*[@id='fittPageContainer'']/div[2]/div[5]/div/div[1]/div[1]/section/div/div[3]/div/div/div[2]/table/tbody/tr[1]/td[7]")
#asts = driver.find_element_by_xpath("//*[@id='fittPageContainer']/div[2]/div[5]/div/div[1]/div[1]/section/div/div[3]/div/div/div[2]/table/tbody/tr[1]/td[8]")
#blks = driver.find_element_by_xpath("//*[@id='fittPageContainer']/div[2]/div[5]/div/div[1]/div[1]/section/div/div[3]/div/div/div[2]/table/tbody/tr[1]/td[9]")
#stls = driver.find_element_by_xpath("//*[@id='fittPageContainer']/div[2]/div[5]/div/div[1]/div[1]/section/div/div[3]/div/div/div[2]/table/tbody/tr[1]/td[10]")
#tnvrs = driver.find_element_by_xpath("//*[@id='fittPageContainer']/div[2]/div[5]/div/div[1]/div[1]/section/div/div[3]/div/div/div[2]/table/tbody/tr[1]/td[12]")
#projectedPoints = points+(rebs*1.2)+(asts*1.5)+(blks*3)+(stls*3)-(tnvrs*1)
print(points)
【问题讨论】:
-
@Prophet 也许 Yomi 仍在学习该网站的运作方式。 Yomi -- 如果某个答案能如愿解决您的问题,您应该接受使用它下面的复选标记来回答。
-
哦,我不知道我必须接受。我现在就去做。谢谢!