簡體   English   中英

硒:將NBA數據提取到Pandas數據框

[英]Selenium: Extract NBA Data to Pandas Dataframe

我希望能夠將這些數據干凈地提取到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)

謝謝!

我能想到的是,您可以先用換行符分割文本:

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

這是您可以輕松完成文本格式設置的最佳選擇。 如果您想要更漂亮的東西,則必須制定出更好的解決方案,但可能可以使用列表切片來實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM