Files
2026-05-07 10:49:58 +08:00

173 lines
7.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ------------------------------------
# Time : 2024/11/16
# File : test.py.py
# 脚本作用 : 竞彩数据
# 项目名称 : 澳客
# ------------------------------------
import os
import time
import requests
import datetime
from lxml import etree
import logging
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import ChromiumOptions
def logger(name):
'''
记录程序运行日志
:param name: 文件名称
:return:
'''
log = logging.getLogger(name)
log.setLevel(logging.DEBUG)
fmt_str = '%(asctime)s [%(levelname)2s] [%(lineno)d] %(message)s'
fmt = logging.Formatter(fmt_str)
stream_h = logging.FileHandler(name)
stream_h.setFormatter(fmt)
stream_h.setLevel(logging.DEBUG)
log.addHandler(stream_h)
return log
def len_list(data):
'''
判断列表长度
:param data: [a,b,c,d,e,f,g,h,i,j,k,l]
:return: a,b,c,d,e,f,g,h,i,j,k,l
'''
if len(data) == 0:
data = 0
return data
elif len(data) == 1:
return data[0]
else:
return data[0]+data[1]
def get_data(date):
'''获取数据'''
url = f'https://www.okooo.com/jingcai/shuju/zhishu/{date}/'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'referer':'https://www.okooo.com/jingcai/shuju/zhishu/'
}
html = requests.get(url, headers=headers).content.decode('GBK')
etrees = etree.HTML(html)
trs = etrees.xpath('/html/body/div[3]/div/div[3]//tr')
db_data_list = []
for i in range(2,len(trs)+1):
changci = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[1]/text()')
bisai = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[2]/span/text()')
bisaishijian = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[3]/text()')
zhudui = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[4]/span/text()')
shengji = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[5]/span/text()')
kedui = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[6]/span/text()')
init_master = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[7]/text()')
init_ping = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[8]/text()')
init_slave = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[9]/text()')
new_master = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[10]/span/span/text()')
new_ping = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[11]/span/span/text()')
new_slave = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[12]/span/span/text()')
tidian = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[13]/a/text()')
jieguo = etrees.xpath(f'/html/body/div[3]/div/div[3]//tr[{i}]/td[14]/text()')
date = datetime.datetime.now()
date = date.strftime(f"%m-%d %H:%M")
db_data = (date,len_list(changci),len_list(bisai),len_list(bisaishijian),len_list(zhudui),len_list(kedui),len_list(init_master),len_list(init_ping),len_list(init_slave),len_list(new_master),len_list(new_ping),len_list(new_slave),len_list(tidian),len_list(shengji),len_list(jieguo))
db_data_list.append(db_data)
return db_data_list
def get_bisi(date):
'''
获取当天比赛
:return: {'比赛时间': '周日002', '主队': '埃因', '客队': '马斯', '受让': '-1', '地址': '1261406'}
'''
G_data = get_data(date)
bisai_list = [i[1] for i in G_data]
url = 'https://www.okooo.com/jingcai/'
headers = {
'referer':'https://www.okooo.com/',
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
html = etree.HTML(response.content.decode('GBK'))
bisai = html.xpath('//*[@class="touzhu_1"]/@data-mid')
b_date = html.xpath('//*[@class="touzhu_1"]/@data-ordercn')
shouran = html.xpath('//*[@class="touzhu_1"]/@data-rq')
master = html.xpath('//*[@class="touzhu_1"]/@data-hname')
slave = html.xpath('//*[@class="touzhu_1"]/@data-aname')
data = zip(b_date,master,slave,shouran,bisai)
data_list = [i for i in data if i[0] in bisai_list]
all_data = zip(G_data,data_list)
all_data_list = []
for i in all_data:
all_list=i[0] + i[1]
all_data_list.append(all_list)
return all_data_list
def m_data(id):
url = f'https://m.okooo.com/match/exchanges.php?MatchID={id}&from=%2Fweixin%2Fjing%2F'
chrome_options = ChromiumOptions()
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
referer = f'https://m.okooo.com/match/odds.php?MatchID={id}&from=%2Fweixin%2Fjing%2F'
chrome_options.add_argument("--disable-bot-detection")
chrome_options.add_argument("--headless")
chrome_options.add_argument(f'--user - agent={user_agent}, referer={referer}')
S = Service(executable_path=f'/opt/project/env_ticai/bin/chromedriver',chrome_options=chrome_options)
driver = webdriver.Chrome(service=S)
driver.get(url)
time.sleep(2)
driver.refresh()
html = driver.page_source
time.sleep(3)
etrees = etree.HTML(html)
#五要素
jiaofeng_w = etrees.xpath('/html/body/div/div/section[7]/div[2]/table/tbody/tr[2]/td[5]/text()')
zhuangtai_w = etrees.xpath('/html/body/div/div/section[7]/div[2]/table/tbody/tr[3]/td[5]/text()')
zhuke_w = etrees.xpath('/html/body/div/div/section[7]/div[2]/table/tbody/tr[4]/td[5]/text()')
peilv_w = etrees.xpath('/html/body/div/div/section[7]/div[2]/table/tbody/tr[5]/td[5]/text()')
renqi_w = etrees.xpath('/html/body/div/div/section[7]/div[2]/table/tbody/tr[6]/td[5]/text()')
data = (len_list(jiaofeng_w),len_list(zhuangtai_w),len_list(zhuke_w),len_list(peilv_w),len_list(renqi_w))
return data
def main(date):
data = get_bisi(date)
data_list = []
for i in data:
data_list.append(m_data(i[-1]))
all_data = zip(data,data_list)
for i in all_data:
all_data = {
'时间': i[0][0],
'场次': i[0][1],
'类型': i[0][2],
'比赛开始时间': i[0][3],
'主队': i[0][4],
'客队': i[0][5],
'受让': i[0][-2],
'初始化_胜': i[0][6],
'初始化_平': i[0][7],
'初始化_负': i[0][8],
'最新_胜': i[0][9],
'最新_平': i[0][10],
'最新_负': i[0][11],
'交锋': i[1][0],
'状态': i[1][1],
'主客': i[1][2],
'赔率': i[1][3],
'人气': i[1][4],
'小澳推荐': i[0][12],
'比分': i[0][12],
'结果': i[0][14]
}
print(all_data)
if __name__ == '__main__':
date = datetime.date.today()
main(date)