108 lines
4.5 KiB
Python
108 lines
4.5 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
# @Time : 2025/1/6 下午2:32
|
|
# @Author : cmk
|
|
# @File : 500竞彩数据获取.py
|
|
# @Email : 15726649712@163.com
|
|
|
|
from DrissionPage import ChromiumPage
|
|
from DrissionPage import ChromiumOptions
|
|
from openpyxl import Workbook
|
|
import time
|
|
class pages:
|
|
def __init__(self):
|
|
co = ChromiumOptions()
|
|
self.page = ChromiumPage()
|
|
self.workbook = Workbook()
|
|
def login(self,gongshi):
|
|
self.page.get('https://odds.500.com/europe_jczq.shtml')
|
|
self.page.ele('x:/html/body/div[7]/div[3]/div/div[2]/div[1]/span/span').click()
|
|
self.page.wait.load_start()
|
|
self.page.ele(f'x:{gongshi}').click()
|
|
self.page.ele('x:/html/body/div[7]/div[3]/div/div[2]/div[2]/div[2]/input[1]').click()
|
|
self.page.wait.load_start()
|
|
trs = self.page.eles('x://*[@id="main-tbody"]/tr')
|
|
data_list = []
|
|
for i in range(1,len(trs)+1):
|
|
if i % 2 !=0:
|
|
id = self.page.s_eles(f'x://*[@id="main-tbody"]/tr[{i}][@data-fid]')[0].attr('data-fid')
|
|
changci = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[1]/label').text
|
|
type = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[2]/a').text
|
|
bs_data = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[4]').text
|
|
master = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[5]/a').text
|
|
slave = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[7]/a').text
|
|
init_s = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[8]').text
|
|
init_p = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[9]').text
|
|
init_f = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[10]').text
|
|
d = {
|
|
'id': id,
|
|
'场次': changci,
|
|
'比赛类型': type,
|
|
'比赛开始时间': bs_data,
|
|
'主对': master,
|
|
'客队': slave,
|
|
'初始胜': init_s,
|
|
'初始平': init_p,
|
|
'初始负': init_f,
|
|
}
|
|
data_list.append(d)
|
|
else:
|
|
id = self.page.eles(f'x://*[@id="main-tbody"]/tr[{i}][@data-fid]')[0].attr('data-fid')
|
|
init_s = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[1]').text
|
|
init_p = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[2]').text
|
|
init_f = self.page.ele(f'x://*[@id="main-tbody"]/tr[{i}]/td[3]').text
|
|
d = {
|
|
'id': id,
|
|
'即时胜': init_s,
|
|
'即时平': init_p,
|
|
'即时负': init_f
|
|
}
|
|
data_list.append(d)
|
|
return data_list
|
|
|
|
def data(self,gongshi):
|
|
data_list = self.login(gongshi)
|
|
merged_data = {}
|
|
for item in data_list:
|
|
id_value = item['id']
|
|
if id_value not in merged_data:
|
|
merged_data[id_value] = item.copy()
|
|
else:
|
|
merged_data[id_value].update(item)
|
|
result_list = list(merged_data.values())
|
|
return result_list
|
|
def quit(self):
|
|
self.page.quit()
|
|
def slave(self,xpat,gongshi):
|
|
data_list = self.data(xpat)
|
|
# default_sheet_name = self.workbook.active.title
|
|
# self.workbook.remove(self.workbook[default_sheet_name])
|
|
worksheet = self.workbook.create_sheet(title=gongshi)
|
|
headers = list(data_list[0].keys())
|
|
worksheet.append(headers)
|
|
for data in data_list:
|
|
row_data = [data.get(key, "") for key in headers]
|
|
worksheet.append(row_data)
|
|
self.workbook.save('data.xlsx')
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
page = pages()
|
|
gongshi_dis = {
|
|
'平均赔率':'//*[@id="company-tbody"]/tr[1]/td[1]/label/input',
|
|
'立博':'//*[@id="company-tbody"]/tr[1]/td[2]/label/input',
|
|
'Bet365':'//*[@id="company-tbody"]/tr[1]/td[3]/label/input',
|
|
'澳门':'//*[@id="company-tbody"]/tr[2]/td[1]/label/input',
|
|
'韦德': '//*[@id="company-tbody"]/tr[2]/td[2]/label/input',
|
|
'snai': '//*[@id="company-tbody"]/tr[2]/td[3]/label/input',
|
|
'威廉':'//*[@id="company-tbody"]/tr[3]/td[1]/label/input',
|
|
'平博': '//*[@id="company-tbody"]/tr[3]/td[2]/label/input',
|
|
}
|
|
for gongshi in gongshi_dis:
|
|
print(f'开始获取:{gongshi}的数据')
|
|
xpat = gongshi_dis[gongshi]
|
|
page.slave(gongshi=gongshi,xpat=xpat)
|
|
print(f'获取到:{gongshi}的数据')
|
|
page.quit() |