#模块导入 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) ##表格数据部分 file=xlwt.Workbook() sheet1 = file.add_sheet('sheet1',cell_overwrite_ok=True) line_per=[] #数据爬取函数准备 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]] line_per.append(line_true) #爬取数据 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' 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) 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]) file.save('python结课程序.xls') #分析数据 sheet1.write(0,7,"两分出手") sheet1.write(0,8,"两分命中") wb = openpyxl.load_workbook('python结课程序.xls') sheet = wb['sheet1'] for i in range(2, 15): c_val = sheet.cell(row=i, column=3).value e_val = sheet.cell(row=i, column=5).value g_val = sheet.cell(row=i, column=7).value result = c_val - e_val - g_val sheet.cell(row=i, column=8).value = result for i in range(2, 15): b_val = sheet.cell(row=i, column=2).value d_val = sheet.cell(row=i, column=4).value f_val = sheet.cell(row=i, column=6).value result = b_val - d_val - f_val sheet.cell(row=i, column=9).value = result wb.save('python结课程序.xls')
时间: 2024-04-02 16:34:32 浏览: 118
这是一个使用 Python 爬取 NBA 球员数据并进行简单分析的程序。其中使用了 Selenium、lxml、xlwt 和 openpyxl 等模块,主要流程为:
1. 使用 Selenium 模拟浏览器访问 NBA 官网的球员数据页面并获取页面源代码。
2. 使用 lxml 对页面源代码进行解析,提取出需要的表格数据。
3. 将数据保存到一个二维数组中。
4. 使用 xlwt 将数据写入 Excel 文件中。
5. 使用 openpyxl 读取 Excel 文件并对数据进行简单分析,计算出两分出手数和两分命中数,并将结果写入 Excel 文件中。
该程序的功能比较简单,但是涉及到了多个 Python 库的使用,可以作为初学者学习 Python 爬虫和数据分析的一个参考。
相关问题
from selenium import webdriver import time from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains # 读取操作excel表格 import openpyxl , 上述代码如何进行封装, 方便引用
可以将上述代码封装成一个类,如下所示:
```
import openpyxl
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
class Login:
def __init__(self, username, password):
self.username = username
self.password = password
self.wb = openpyxl.load_workbook('example.xlsx')
self.ws = self.wb.active
self.service = Service('chromedriver')
self.driver = webdriver.Chrome(service=self.service)
def login(self):
self.driver.get('https://www.example.com/login')
# 输入用户名和密码
username_field = self.driver.find_element(By.ID, 'username')
password_field = self.driver.find_element(By.ID, 'password')
username_field.send_keys(self.username)
password_field.send_keys(self.password)
# 点击登录按钮
login_button = self.driver.find_element(By.ID, 'login-button')
ActionChains(self.driver).move_to_element(login_button).click().perform()
def logout(self):
# 退出登录
logout_button = self.driver.find_element(By.ID, 'logout-button')
ActionChains(self.driver).move_to_element(logout_button).click().perform()
self.driver.quit()
self.wb.save('example.xlsx')
```
然后在其他文件中可以实例化该类并调用其中的方法,如下所示:
```
from login import Login
# 实例化 Login 类并登录账号
login = Login('your_username', 'your_password')
login.login()
# 在需要退出登录的地方调用 logout 方法
login.logout()
```
这样可以将登录和退出登录的代码封装在一个类中,便于管理和维护。
from selenium import webdriver from selenium.webdriver.edge.webdriver import WebDriver server = WebDriver() driver = webdriver.Edge()
这段代码使用了Selenium库来控制浏览器进行自动化测试。其中,from selenium import webdriver是导入Selenium库中的webdriver模块,webdriver模块提供了各种浏览器的驱动程序,可以通过这些驱动程序来控制浏览器。而from selenium.webdriver.edge.webdriver import WebDriver则是导入了Edge浏览器的驱动程序,用于控制Edge浏览器。接下来,server = WebDriver()创建了一个Edge浏览器的WebDriver实例,而driver = webdriver.Edge()则是创建了一个Edge浏览器的WebDriver实例,两者的效果是一样的。
阅读全文