-
Notifications
You must be signed in to change notification settings - Fork 3
/
livescore.py
51 lines (36 loc) · 1.75 KB
/
livescore.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from bs4 import BeautifulSoup
import requests, os
__author__ = "@gwuah"
def scrape_from_livescore() :
print('Fetching markup from livescores.com ..')
# try catching all possible http errors
try :
livescore_html = requests.get('http://www.livescores.com/')
except Exception as e :
return print('An error occured as: ', e)
print("Feeding markup to beautiful soup .. \n")
parsed_markup = BeautifulSoup(livescore_html.text, 'html.parser')
# dictionary to contain score
scores = {}
# scrape needed data from the parsed markup
for element in parsed_markup.find_all("div", "row-gray") :
match_name_element = element.find(attrs={"class": "scorelink"})
if match_name_element is not None :
# this means the match is about to be played
match_name = match_name_element.get('href').split('/')[4]
home_team_score = element.find("div", "sco").get_text().split("-")[0].strip()
away_team_score = element.find("div", "sco").get_text().split("-")[1].strip()
# add our data to our dictionary
scores[match_name] = (home_team_score, away_team_score)
else :
# we need to use a different method to get our data
home_team = '-'.join(element.find("div", "tright").get_text().strip().split(" "))
away_team = '-'.join(element.find(attrs={"class": "ply name"}).get_text().strip().split(" "))
home_team_score = element.find("div", "sco").get_text().split("-")[0].strip()
away_team_score = element.find("div", "sco").get_text().split("-")[1].strip()
match_name = '{}-vs-{}'.format(home_team, away_team)
# add our datat to our dictionary
scores[match_name] = (home_team_score, away_team_score)
return scores
scoreboard = scrape_from_livescore()
print(scoreboard)