from selenium.webdriver import ActionChains
from selenium import webdriver
import xlwt
import pandas as pd
import time
import csv
def nbadata():
df = xlwt.Workbook()
sheet1 = df.add_sheet('nbadata', cell_overwrite_ok=True)
rowsTitle = [u'中文名', u'英文名', u'球员号码', u'位置', u'身高', u'体重', u'年龄', u'球龄']
for i in range(len(rowsTitle)):
sheet1.write(0, i, rowsTitle[i])
for i in range(1, 31):
browser = webdriver.Chrome(executable_path='D:\wen\chromedriver.exe')
browser.maximize_window()
time.sleep(3)
url = "https://nba.stats.qq.com/player/list.htm#teamId={}".format(i)
browser.get(url)
# 获取球员中文名
chinese_names = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[2]/a')
chinese_names_list = [i.text for i in chinese_names]
# 获取球员英文名
english_names = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[3]/a')
english_names_list = [i.get_attribute('title') for i in english_names] # 获取属性
# 获取球员号码
numbers = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[4]')
numbers_list = [i.text for i in numbers]
# 获取球员位置
locations = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[5]')
locations_list = [i.text for i in locations]
# 获取球员身高
heights = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[6]')
heights_list = [i.text for i in heights]
# 获取球员体重
weights = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[7]')
weights_list = [i.text for i in weights]
# 获取球员年龄
ages = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[8]')
ages_list = [i.text for i in ages]
# 获取球员球龄
qiu_lings = browser.find_elements_by_xpath('//div[@class="players"]//tr[@class="show"]/td[9]')
qiu_lings_list = [i.text for i in qiu_lings]
for j in range(len(chinese_names_list)):
sheet1.write(i * len(chinese_names_list) + j, 0, chinese_names_list[j])
sheet1.write(i * len(chinese_names_list) + j, 1, english_names_list[j])
sheet1.write(i * len(chinese_names_list) + j, 2, numbers_list[j])
sheet1.write(i * len(chinese_names_list) + j, 3, locations_list[j])
sheet1.write(i * len(chinese_names_list) + j, 4, heights_list[j])
sheet1.write(i * len(chinese_names_list) + j, 5, weights_list[j])
sheet1.write(i * len(chinese_names_list) + j, 6, ages_list[j])
sheet1.write(i * len(chinese_names_list) + j, 7, qiu_lings_list[j])
df.save('F:/NBA.xls')
print('有{}'.format(i)+'个球队已写入')
browser.close()
nba球员基本信息的写入,这个是有参考另一位朋友的资源,哈哈,能白嫖就尽量白嫖,不过这个很简单,写起来也很容易,毕竟人家把信息放在这里让你取。
中间的等待换为隐式等待更好,但是我懒得去找那几行代码了,有需要的朋友可以去看我之前发的那几个cnki的文章,有那样写。
写入mysql,txt等操作大同小异,可以试着去自己写一下。
这是样品,可能中间有部分空行,这是写入时的参数没调好,自己删了吧,我也懒得再写了。