【问题标题】:Selenium: Extract NBA Data to Pandas DataframeSelenium:将 NBA 数据提取到 Pandas Dataframe
【发布时间】:2018-09-03 20:15:31
【问题描述】:

我希望能够将这些数据干净地提取到 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)

谢谢!

【问题讨论】:

    标签: python excel pandas csv selenium


    【解决方案1】:

    我能想到的是你可以先用换行符分割你的文本:

    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')
    

    这是您可以轻松对文本格式进行的最佳操作。如果你想要更漂亮的东西,你必须想出一个更好的解决方案,但可能使用列表切片你可以做到。

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 2019-04-25
      • 1970-01-01
      • 2019-06-20
      • 2022-01-03
      相关资源
      最近更新 更多