@rebecca #131479
现在该回答丽贝卡的问题了。就我的印象而言,当赔率改变的“瞬间”(我也不知道延时是多少),下注会失败。所以要尽快下注。
赔率的统计方法是用爬虫爬sportsbookreview的网站,这个程序是五年前的,由于网站改版而失效,如果要用的话,得重新调试爬虫了。我使用python和BeautifulSoup软件包。
import urllib.request
from bs4 import BeautifulSoup
import re
import time
import datetime
def to_int(s):
if s=='even':
return 100
elif s=='Even':
return 100
elif s=='EVEN':
return 100
elif s=='-':
return -9999
else:
try:
return int(s)
except TypeError:
return -9999
def odds_list(url,name):
rotNumber=[]
moneyline=[]
dic={}
matchname={}
gamedate={}
gamehour={}
#c = ntplib.NTPClient()
#print(c)
#response = c.request('time.nist.gov', version=3)
#print(time.ctime(response.tx_time))
#url = "http://www.sportsbookreview.com/betting-odds/ufc/"
page=urllib.request.urlopen(url)
#print(url)
soup = BeautifulSoup(page.read())
#soup = BeautifulSoup(open("./sbr_"+"mlb"+"_moneyline.html"))
a=[[0 for x in range(10)] for x in range(1000)]
b=[[0 for x in range(10)] for x in range(1000)]
i=0
j=0
#print(a)
for list in soup.find_all("div", attrs={"class": re.compile("^(eventLine-book-value)")}):
for ss in list.find_all("b"):
if j%2==0:
a[i][j//2]=to_int(ss.string)
else:
b[i][j//2]=to_int(ss.string)
j+=1
if j==20:
j=0
i+=1
i=0
#print(a)
#print(b)
for list1 in soup.find_all(itemprop="name"):
#print(list1)
matchname[i//2]=list1
dic[i]=a[i//2]
i+=1
dic[i]=b[i//2]
i+=1
i=0
for list2 in soup.find_all(itemprop="startdate"):
#print(list2)
times=list2.attrs['content']
dates=times[0:10]
#print(dates)
hours=times[11:16]
#print(hours)
gamedate[i//2]=dates
gamehour[i//2]=hours
#print(gamedate[i//2])
#print(gamehour[i//2]) # print(gamedate[i//2]
#dic[i]=a[i//2]
#moneyline[i]=line1[i//2]
i+=1
#dic[i]=b[i//2]
#moneyline[i]=line2[i//2]
i+=1
currenttime='{:%H:%M}'.format(datetime.datetime.time(datetime.datetime.now()))
currentdate=str(datetime.date.today())
#for key in dic:
# print(key,dic[key],len(dic[key]),'\n')
#print(gamedate)
#print(gamehour)
#print(matchname)
#print(currenttime)
#print(currentdate)
for key in dic:
#print(key)
#print(gamedate[key//2])
#print(gamehour[key//2])
if key%2==1:
if ((dic[key][2]+dic[key-1][3]>-2 or dic[key][3]+dic[key-1][2]>-2) and (gamedate[key//2]>currentdate or (gamedate[key//2]==currentdate and gamehour[key//2]>currenttime)) and dic[key][2]!=0 and dic[key][3]!=0 ):
#print((gamedate[key//2]>currentdate or (gamedate[key//2]==currentdate and gamehour[key//2]>currenttime)))
print(name,matchname[key//2],dic[key][2],dic[key-1][3])
print(name,matchname[key//2],dic[key][3],dic[key-1][2])
#if max(dic[key])+max(dic[key-1])>0:
#print(name,matchname[key//2],max(dic[key]),max(dic[key-1]))
#print(name)
def odds_list_fight(url,name):
rotNumber=[]
moneyline=[]
dic={}
matchname={}
gamedate={}
gamehour={} #c = ntplib.NTPClient()
#print(c)
#response = c.request('time.nist.gov', version=3)
#print(time.ctime(response.tx_time))
#url = "http://www.sportsbookreview.com/betting-odds/ufc/"
page=urllib.request.urlopen(url)
#print(url)
soup = BeautifulSoup(page.read())
#soup = BeautifulSoup(open("./sbr_"+"mlb"+"_moneyline.html"))
a=[[0 for x in range(10)] for x in range(1000)]
b=[[0 for x in range(10)] for x in range(1000)]
i=0
j=0
#print(a)
for list in soup.find_all("div", attrs={"class": re.compile("^(eventLine-book-value)")}):
for ss in list.find_all("b"):
if j%2==0:
a[i][j//2]=to_int(ss.string)
else:
b[i][j//2]=to_int(ss.string)
j+=1
if j==20:
j=0
i+=1
i=0
#print(a)
#print(b)
for list1 in soup.find_all(itemprop="name"):
#print(list1)
matchname[i//2]=list1
dic[i]=a[i//2]
i+=1
dic[i]=b[i//2]
i+=1
i=0
#print(dic)
#print(line1)
#print(line2)
#print(matchname)
for list2 in soup.find_all(itemprop="startdate"):
#print(list2)
times=list2.attrs['content']
dates=times[0:10]
#print(dates)
hours=times[11:16]
#print(hours)
gamedate[i//2]=dates
gamehour[i//2]=hours
#dic[i]=a[i//2]
#moneyline[i]=line1[i//2]
i+=1
#dic[i]=b[i//2]
#moneyline[i]=line2[i//2]
i+=1
currenttime='{:%H:%M}'.format(datetime.datetime.time(datetime.datetime.now()))
currentdate=str(datetime.date.today())
#for key in dic:
# print(key,dic[key],len(dic[key]),'\n')
#print(dic)
#print(matchname)
for key in dic:
#print(key)
if key%2==1:
if ((dic[key][0]+dic[key-1][2]>-2 or dic[key][2]+dic[key-1][0]>-2) and (gamedate[key//2]>currentdate or (gamedate[key//2]==currentdate and gamehour[key//2]>currenttime)) and dic[key][2]!=0 ):
print(name,matchname[key//2],dic[key][0],dic[key-1][2])
print(name,matchname[key//2],dic[key][2],dic[key-1][0])
#if max(dic[key])+max(dic[key-1])>0:
#print(name,matchname[key//2],max(dic[key]),max(dic[key-1]))
#print(name)
def odds_list_spread(url,name):
rotNumber=[]
moneyline={}
gamedate={}
gamehour={}
dic={}
matchname={}
#c = ntplib.NTPClient()
#print(c)
#response = c.request('time.nist.gov', version=3)
#print(time.ctime(response.tx_time))
#url = "http://www.sportsbookreview.com/betting-odds/ufc/"
page=urllib.request.urlopen(url)
#print(url)
soup = BeautifulSoup(page.read())
#soup = BeautifulSoup(open("./sbr_"+"mlb"+"_moneyline.html",encoding='utf8'))
a=[[0 for x in range(10)] for x in range(1000)]
b=[[0 for x in range(10)] for x in range(1000)]
line1=[[0 for x in range(10)] for x in range(1000)]
line2=[[0 for x in range(10)] for x in range(1000)]
i=0
j=0
#print(j)
for list in soup.find_all("div", attrs={"class": re.compile("^(eventLine-book-value)")}):
for ss in list.find_all("b"):
#print(ss)
if j%2==0:
if ss.string:
if ss.string[0:2] == "PK": # PK (Even)
#print("PK")
line1[i][j//2]="PK"
a[i][j//2]=to_int(ss.string[2:])
else:
#print(ss.string[0:2])
line1[i][j//2]=ss.string.split('\xa0')[0]
a[i][j//2]=to_int(ss.string.split('\xa0')[1])
else:
if ss.string:
if ss.string[0:2] == "PK": # PK (Even)
#print("PK")
line2[i][j//2]="PK"
b[i][j//2]=to_int(ss.string[2:])
else:
#print(ss.string[0:2])
line2[i][j//2]=ss.string.split('\xa0')[0]
b[i][j//2]=to_int(ss.string.split('\xa0')[1])
j+=1
if j==20:
j=0
i+=1
i=0
#print(line1)
#print(line2)
#print(a)
#print(b)
for list1 in soup.find_all(itemprop="name"):
#print(list1)
matchname[i//2]=list1
dic[i]=a[i//2]
#moneyline[i]=line1[i//2]
i+=1
dic[i]=b[i//2]
#moneyline[i]=line2[i//2]
i+=1
#for key in dic:
# print(key,dic[key],len(dic[key]),'\n')
i=0
#print(dic)
#print(line1)
#print(line2)
#print(matchname)
for list2 in soup.find_all(itemprop="startdate"):
#print(list2)
times=list2.attrs['content']
dates=times[0:10]
#print(dates)
hours=times[11:16]
#print(hours)
gamedate[i//2]=dates
gamehour[i//2]=hours
#dic[i]=a[i//2]
#moneyline[i]=line1[i//2]
i+=1
#dic[i]=b[i//2]
#moneyline[i]=line2[i//2]
i+=1
currenttime='{:%H:%M}'.format(datetime.datetime.time(datetime.datetime.now()))
currentdate=str(datetime.date.today())
for key in dic:
#print(key)
if key%2==1:
if 1:
if ((dic[key][4]+dic[key-1][3]>-2 or dic[key][3]+dic[key-1][4]>-2) and (gamedate[key//2]>currentdate or (gamedate[key//2]==currentdate and gamehour[key//2]>currenttime)) and dic[key][3]!=0 and dic[key][4]!=0 ):
print(name,matchname[key//2],dic[key][4],dic[key-1][3])
print(name,matchname[key//2],dic[key][3],dic[key-1][4])
#if max(dic[key])+max(dic[key-1])>0:
#print(name,matchname[key//2],max(dic[key]),max(dic[key-1]))
#print(name)
def odds_list_spread_fight(url,name):
rotNumber=[]
moneyline=[]
dic={}
matchname={}
#c = ntplib.NTPClient()
#print(c)
#response = c.request('time.nist.gov', version=3)
#print(time.ctime(response.tx_time))
#url = "http://www.sportsbookreview.com/betting-odds/ufc/"
page=urllib.request.urlopen(url)
#print(url)
soup = BeautifulSoup(page.read())
#soup = BeautifulSoup(open("./sbr_"+"mlb"+"_moneyline.html",encoding='utf8'))
a=[[0 for x in range(10)] for x in range(1000)]
b=[[0 for x in range(10)] for x in range(1000)]
line1=[[0 for x in range(10)] for x in range(1000)]
line2=[[0 for x in range(10)] for x in range(1000)]
i=0
j=0
#print(j)
for list in soup.find_all("div", attrs={"class": re.compile("^(eventLine-book-value)")}):
#print (list)
for ss in list.find_all("b"):
#print(ss)
if j%2==0:
if ss.string:
line1[i][j//2]=ss.string.split('\xa0')[0]
a[i][j//2]=to_int(ss.string.split('\xa0')[1])
else:
if ss.string:
line2[i][j//2]=ss.string.split('\xa0')[0]
b[i][j//2]=to_int(ss.string.split('\xa0')[1])
j+=1
if j==20:
j=0
i+=1
i=0
#print(a)
#print(b)
for list1 in soup.find_all(itemprop="name"):
#print(list1)
matchname[i//2]=list1
dic[i]=a[i//2]
#moneyline[i]=line1[i//2]
i+=1
dic[i]=b[i//2]
#moneyline[i]=line2[i//2]
i+=1
#for key in dic:
# print(key,dic[key],len(dic[key]),'\n')
#print(dic)
#print(line1)
#print(line2)
#print(matchname)
#print(line1)
#print(line2)
for key in dic:
#print(key)
if key%2==1:
if 1:
if ((dic[key][1]+dic[key-1][3]>-2 or dic[key][3]+dic[key-1][1]>-2) and dic[key][3]!=0 and dic[key][1]!=0):
print(name,matchname[key//2],dic[key][1],dic[key-1][3])
print(name,matchname[key//2],dic[key][3],dic[key-1][1])
#if max(dic[key])+max(dic[key-1])>0:
#print(name,matchname[key//2],max(dic[key]),max(dic[key-1]))
#print(name)
while(1):
odds_list("http://www.sportsbookreview.com/betting-odds/tennis/","Tennis")
odds_list("http://www.sportsbookreview.com/betting-odds/nfl-football/money-line/","NFL")
odds_list("http://www.sportsbookreview.com/betting-odds/nfl-football/money-line/1st-half","NFL 1st half")
odds_list("http://www.sportsbookreview.com/betting-odds/nfl-football/money-line/2nd-half","NFL 2nd half")
odds_list("http://www.sportsbookreview.com/betting-odds/nfl-football/money-line/1st-quarter","NFL 1st quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/nfl-football/money-line/2nd-quarter","NFL 2nd quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/nfl-football/money-line/3rd-quarter","NFL 3rd quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/nfl-football/money-line/4th-quarter","NFL 4th quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/college-football/money-line/","NCAA Football")
odds_list("http://www.sportsbookreview.com/betting-odds/mlb-baseball/","MLB")
odds_list("http://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/","NBA")
odds_list("http://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/1st-half","NBA 1st half")
odds_list("http://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/2nd-half","NBA 2nd half")
odds_list("http://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/1st-quarter","NBA 1st quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/2nd-quarter","NBA 2nd quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/3rd-quarter","NBA 3rd quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/4th-quarter","NBA 4th quarter")
odds_list("http://www.sportsbookreview.com/betting-odds/ncaa-basketball/money-line/","NCAA Basketball")
odds_list("http://www.sportsbookreview.com/betting-odds/ncaa-basketball/money-line/1st-half","NCAAB 1st half")
odds_list("http://www.sportsbookreview.com/betting-odds/ncaa-basketball/money-line/2nd-half","NCAAB 2nd half")
odds_list("http://www.sportsbookreview.com/betting-odds/wnba-basketball/money-line/","WNBA")
odds_list("http://www.sportsbookreview.com/betting-odds/nhl-hockey/","NHL")
odds_list("http://www.sportsbookreview.com/betting-odds/nhl-hockey/1st-quarter","NHL 1Q")
odds_list("http://www.sportsbookreview.com/betting-odds/nhl-hockey/2nd-quarter","NHL 2Q")
odds_list("http://www.sportsbookreview.com/betting-odds/nhl-hockey/3rd-quarter","NHL 3Q")
odds_list_fight("http://www.sportsbookreview.com/betting-odds/boxing/","Boxing")
odds_list_fight("http://www.sportsbookreview.com/betting-odds/ufc/","UFC")
print('{:%H:%M}'.format(datetime.datetime.time(datetime.datetime.now())))