Я ВЕЗДЕ искал какую-либо помощь по любому методу на Python, чтобы очистить веб-страницы от всех реквизитов nba с app.prizepicks.com. Я пришел к двум потенциальным методам: API с пандами и селеном. Я считаю, что Prizepicks недавно закрыли свою систему API, чтобы пользователи не могли очищать реквизиты nba, поэтому, насколько мне известно, использование selenium-stealth - единственный возможный способ очистить веб-страницу с доски Prizepicks nba. Может ли кто-нибудь помочь мне или предоставить код, который собирает призы для всех реквизитов НБА? Необходимой информацией будет имя игрока, тип реквизита (например, очки, подборы, выполненные 3-очковые, выполненные штрафные броски, фэнтези, очки+ребы и т. д.), строка реквизита (например, 34,5, 8,5, которая может принадлежать игроку). тип опоры, такой как очки и подборы соответственно). Мне нужно, чтобы это работало прилично быстро и обновляло каждое заданное количество минут. Я нашел что-то похожее на то, что мне хотелось бы предоставить в другой теме от «C. Пек». Что я и предоставлю (надеюсь, я действительно не знаю, как использовать stackoverflow). Но код, предоставленный К. Пек, не работает на моем устройстве, и мне было интересно, напишет ли кто-нибудь здесь функциональный код/исправит этот код, чтобы он работал у меня. У меня MacBook Pro, поэтому я не знаю, влияет ли это на что-нибудь.
РЕДАКТИРОВАТЬ
После долгих испытаний и ошибка и помощь из ветки, мне удалось выполнить первый шаг. Я могу очищать веб-страницы с вкладки «Очки» в лиге призеров НБА, но я хочу собирать всю информацию с каждой вкладки, а не только очки. Честно говоря, я не знаю, почему мой код не работает полностью, но я в основном хочу, чтобы он собирал очки, подборы, передачи, фантазию и т. д. Дайте мне знать, какие исправления я должен сделать, чтобы иметь возможность очищать каждый stat_element в stat_container, или другие методы тоже! Я обновлю код ниже:
РЕДАКТИРУЙТЕ СНОВА
похоже, что проблема заключается в «стат-контейнере» и «стат-элементы». Я проверил, какие элементы есть у «стат-элементов», и это только точки. Я проверил, какие элементы есть в «стат-контейнере», и это выдало ошибку. Я верю, что если кто-нибудь мне поможет, проблема будет решена. Это ошибка, которую выдает, когда я пытаюсь увидеть элементы внутри «stat-container»: строка 27 в
для элемента в stat_container:
^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
TypeError: объект «WebElement» не повторяется
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
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://app.prizepicks.com/")
driver.find_element(By.CLASS_NAME, "close").click()
time.sleep(2)
driver.find_element(By.XPATH, "//div[@class='name'][normalize-space()='NBA']").click()
time.sleep(2)
# Wait for the stat-container element to be present and visible
stat_container = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CLASS_NAME, "stat-container")))
# Find all stat elements within the stat-container
stat_elements = driver.find_elements(By.CSS_SELECTOR, "div.stat")
# Initialize empty list to store data
nbaPlayers = []
# Iterate over each stat element
for stat in stat_elements:
# Click the stat element
stat.click()
projections = WebDriverWait(driver, 20).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".projection")))
for projection in projections:
names = projection.find_element(By.XPATH, './/div[@class="name"]').text
points= projection.find_element(By.XPATH, './/div[@class="presale-score"]').get_attribute('innerHTML')
text = projection.find_element(By.XPATH, './/div[@class="text"]').text
print(names, points, text)
players = {
'Name': names,
'Prop':points, 'Line':text
}
nbaPlayers.append(players)
df = pd.DataFrame(nbaPlayers)
print(df)
driver.quit()
Подробнее здесь: https://stackoverflow.com/questions/751 ... -nba-props