Files
test/体彩/500竞彩数据获取.py
2026-05-07 10:49:58 +08:00

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()