edit:
Just ran the code posted yesterday and the line
Code: Select all
if bool(Runners) == True and ('OR' in grade or 'A' in grade):
Code: Select all
if bool(Runners) == True and ('OR' in grade or 'A' in grade) and len(Runners.items())>1:
Code: Select all
import json
import re
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession
def main():
session = HTMLSession()
baseUrl = "https://www.sportinglife.com"
results=[]
urls = []
res = requests.get("https://www.sportinglife.com/greyhounds/racecards")
soup = BeautifulSoup(res.text, "html.parser")
data =json.loads( soup.find('script', type='application/json').string) #convert to dictionary
for market in data['props']['pageProps']['meetings']:
for race in market['races']:
if race['race_stage'] == "Dormant":
urls.append('/greyhounds/racecards/' + race['date'] + '/' + race['course_name'].replace(" ", "-") + '/racecard/' + str(race['race_summary_reference']['id']))
x = 0
for link in urls:
res = session.get(baseUrl + link)
print(baseUrl + link)
soup = BeautifulSoup(res.text, "html.parser")
data =json.loads( soup.find('script', type='application/json').string)
grade = data['props']['pageProps']['race']['race_summary']['race_class']
distance = data['props']['pageProps']['race']['race_summary']['distance']
course = data['props']['pageProps']['race']['race_summary']['course_name']
race = data['props']['pageProps']['race']['race_summary']['date'] + "," + data['props']['pageProps']['race']['race_summary']['time'] + " " + course
Runners = dict()
print((baseUrl + link))
data =json.loads( soup.find('script', type='application/json').string) #convert to dictionary
for runner in data['props']['pageProps']['race']['runs']:
Trap = runner['cloth_number']
Name = runner['greyhound']['name']
fastest_time=100
for time in runner['greyhound']['previous_results']:
if 'distance' in time.keys() and time['distance'] == distance and time['run_time'] !="":
if float(time['run_time'].strip("s")) <= fastest_time:
fastest_time=float(time['run_time'].strip("s"))
Runners[fastest_time] = str(Trap) + '. ' + Name
if bool(Runners) == True and ('OR' in grade or 'A' in grade) and len(Runners.items())>1:
x = sorted(((k, v) for k, v in Runners.items()))
if (x[1][0] - x[0][0]) >= 0.1:
timeDiff = round((x[1][0] - x[0][0]), 2)
results.append(race + ', ' + x[0][1] + ', class ' + grade + ', time difference ' + str(timeDiff))
results.sort()
file = open('dogs_1.txt', mode='w')
for line in results: file.write(line+'\n')
file.close()
main()