我希望能够将这些数据干净地提取到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)
谢谢!
答案 0 :(得分:0)
我能想到的是,您可以先用换行符分割文本:
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')
这是您轻松使用文本格式可以做到的最好。如果您想要更漂亮的东西,则必须制定出更好的解决方案,但可能可以使用列表切片来实现。