示例網址:https ://fantasy.espn.com/basketball/team?leagueId=454981630&seasonId=2023&teamId=10
所以我想要做的基本上是在某人的幻想團隊中獲取球員的名字。所有的名字都位于下面,每個玩家都列在下面"Table__TR Table__TR--lg Table__odd"。
我嘗試使用 BS4,soup.find_all(class_=(Table__TBODY))但它一直沒有回傳。(我的猜測是該網站的 javascript 與 bs4 混淆了)。
然后我切換到硒并運行以下無濟于事。
# pull player from espn team
from selenium import webdriver
from selenium.webdriver.common.by import By
PATH = "C:\ChromeDrive\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://fantasy.espn.com/basketball/team?leagueId=454981630&seasonId=2023&teamId=10
")
print(driver.title)
search = driver.find_element(By.CSS_SELECTOR, 'Table__TR Table__TR--lg Table__odd')
print(search)
然而,我得到的只是一個錯誤,說該元素不存在。這是怎么回事?我知道元素存在,因為我正在看它。起初我認為這是因為聯賽是私有的,而 selenium 無法以我看到的方式訪問該站點,但不,聯賽是公開的,任何人都可以查看。
如果有人能解釋為什么我無法訪問該元素以及如何改進代碼,我將不勝感激。謝謝你。
uj5u.com熱心網友回復:
或者,您也可以request僅在從 api 中提取資訊時使用,這也將為您提供 JSON 結構中的許多其他資訊。
例子
import requests
url = 'https://fantasy.espn.com/apis/v3/games/fba/seasons/2023/segments/0/leagues/454981630?forTeamId=10&scoringPeriodId=1&view=mRoster'
r = requests.get(url, headers = {"User-Agent": "Mozilla/5.0"})
for e in r.json()['teams'][0]['roster']['entries']:
print(e['playerPoolEntry']['player']['fullName'])
輸出
Luka Doncic
Paul George
Bradley Beal
Chris Paul
CJ McCollum
Malcolm Brogdon
Russell Westbrook
Draymond Green
Wendell Carter Jr.
Jerami Grant
John Wall
Aaron Gordon
Bojan Bogdanovic
uj5u.com熱心網友回復:
如果您想使用 selenium,這是獲取這些名稱的一種方法(并且只有名稱。您還需要一些額外的匯入:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
[..]
wait = WebDriverWait(driver, 20)
driver.get(url)
players = wait.until(EC.presence_of_all_elements_located((By.XPATH, '//div[contains(@class, "player-column__athlete")]')))
print([x.find_element(By.TAG_NAME, 'a').text for x in players])
結果在終端:
['Luka Doncic', 'Bradley Beal', 'Paul George', 'Draymond Green', 'Wendell Carter Jr.', 'Chris Paul', 'Jerami Grant', 'CJ McCollum', 'Malcolm Brogdon', 'Russell Westbrook', 'John Wall', 'Aaron Gordon', 'Bojan Bogdanovic']
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/514459.html
上一篇:使用headlessselenium抓取動態站點-為什么我沒有得到腳本生成的內容?
下一篇:Selenium隨機滾動
