Selenium: Извлечение данных NBA в Pandas Dataframe - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу иметь возможность аккуратно извлекать эти данные в файл Excel, но не совсем уверен, как анализировать текст. Пока я могу хранить таблицу в элементе и печатать все.

Вот мой код ниже:

# Import libraries.
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# Create a Chrome Session
driver = webdriver.Chrome('C:\\Users\\Gene\\Desktop\\chromedriver')
driver.get('https://stats.nba.com/team/1610612739/onoffcourt-traditional/?Season=2017-18&SeasonType=Regular%20Season&PerMode=Totals')

# Enter Date
d = '10/17/2017'

# Click Advanced Tab
driver.find_element_by_xpath("/html/body/main/div[2]/div/div/div[3]/div/div/div/div[1]/div[5]").click()

# Send Date
date1 = driver.find_element_by_xpath("/html/body/main/div[2]/div/div/div[3]/div/div/div/div[3]/div[1]/div[3]/div[2]/div/input")

date1.send_keys(d)

date2 = driver.find_element_by_xpath("/html/body/main/div[2]/div/div/div[3]/div/div/div/div[3]/div[1]/div[3]/div[3]/div/input")

date2.send_keys(d)

# Find Table
driver.find_element_by_xpath("/html/body/main/div[2]/div/div/div[3]/div/div/div/div[3]/div[2]/stats-run-it/a").click()

# Store Table
table = driver.find_element_by_xpath('/html/body/main/div[2]/div/div/div[3]/div/div/div/nba-stat-table[2]/div[2]/div[1]')

# View Table
print(table.text)

Спасибо!

1 Ответ

0 голосов
/ 04 сентября 2018

Что я могу вспомнить, так это то, что вы можете сначала разбить текст на новую строку:

rows=table.text.split('\n')

Теперь у вас есть одна строка для каждой строки вашего будущего DataFrame / Excel. Затем вы можете разделить каждый элемент rows, чтобы получить каждое отдельное наблюдение:

element=[]
for r in rows:
    element.append([i for i in r.split(' ')])

Наконец, вы можете превратить этот список списков в DataFrame:

df=pd.DataFrame(element)

Чтобы включить первую строку в имена столбцов, а затем отбросить ее:

df.columns=df.iloc[0]
df=df.reindex(df.index.drop(0)) 

Теперь у вас есть нечто очень похожее на то, что вы хотите. Затем вы можете экспортировать его:

df.to_excel('nba.xlsx')

Это лучшее, что вы можете легко сделать с вашим форматированием текста. Если вы хотите что-то более красивое, вам придется найти лучшее решение, но, возможно, с помощью нарезки списка вы можете сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...