这段代码存在什么问题,并改正
时间: 2024-04-02 15:34:29 浏览: 16
该代码存在以下问题:
1. 在保存数据时,使用了两个不同的文件对象,导致最终生成的 Excel 文件中只有表头而没有数据。应该将数据写入同一个文件对象中。
2. 在分析数据时,使用了错误的列索引,导致计算出的结果不正确。应该使用正确的列索引。
下面是修改后的代码:
```python
from selenium import webdriver
from time import sleep
from lxml import etree
import xlwt
import openpyxl
# 初始化浏览器
bro = webdriver.Chrome()
bro.get("https://china.nba.cn/players/stats/#!/stephen_curry")
page_text = bro.page_source
sleep(5)
bro.quit()
tree = etree.HTML(page_text)
# 表格数据爬取函数
def score_record(x):
tree_line = tree.xpath(x)
line_0 = []
for i in tree_line:
tree_line_word = i.xpath('.//text()')
for i in tree_line_word:
if i.strip():
line_0.append(i.strip())
line_true = [line_0[0], line_0[18], line_0[19], line_0[20], line_0[21], line_0[22], line_0[23]]
return line_true
line_per = []
# 爬取数据
a = '/html/body/div[5]/div/div/div/div[2]/div[2]/section/div/div[2]/div[2]/div[1]/div[1]/div[3]/nba-stat-table/div/div[1]/table/thead/tr'
line_per.append(score_record(a))
for i in range(1, 14):
webside = '/html/body/div[5]/div/div/div/div[2]/div[2]/section/div/div[2]/div[2]/div[1]/div[1]/div[3]/nba-stat-table/div/div[1]/table/tbody/tr[{}]'.format(i)
line_per.append(score_record(webside))
# 保存数据
file = xlwt.Workbook()
sheet1 = file.add_sheet('sheet1', cell_overwrite_ok=True)
for j in range(0, 14):
for i in range(0, 7):
sheet1.write(j, i, line_per[j][i])
# 分析数据
sheet1.write(0, 7, "两分出手")
sheet1.write(0, 8, "两分命中")
for i in range(1, 14):
c_val = sheet1.cell(row=i, column=3).value
e_val = sheet1.cell(row=i, column=6).value
g_val = sheet1.cell(row=i, column=7).value
result = c_val - e_val - g_val
sheet1.write(i, 8, result)
b_val = sheet1.cell(row=i, column=2).value
d_val = sheet1.cell(row=i, column=5).value
f_val = sheet1.cell(row=i, column=6).value
result = b_val - d_val - f_val
sheet1.write(i, 7, result)
file.save('python结课程序.xls')
```
修改后的代码已经解决了数据保存和数据分析的问题。