summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scrape-scores.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/scrape-scores.py b/scrape-scores.py
index 05517e6..a2dfccd 100644
--- a/scrape-scores.py
+++ b/scrape-scores.py
@@ -12,10 +12,17 @@ board = int(sys.argv[4])
content = bs(file(input_file), 'lxml')
rows = content.select('tr')
-scores = []
-points = []
+scores = {}
+current_table_no = None
+current_table = []
for row in rows:
+ table_link = row.select('a[target="polew"]')
+ if table_link:
+ if current_table_no:
+ scores[current_table_no] = current_table
+ current_table_no = int(table_link[0].text)
+ current_table = []
cells = row.select('td.bdc')
if len(cells) > 0:
score = ''
@@ -26,20 +33,19 @@ for row in rows:
score += element['alt']
else:
score += element.replace('×'.decode('utf8'), 'x')
- scores.append(score)
point_cells = row.select('td.zno') + row.select('td.zeo')
- points.append((point_cells)[0].text if len(point_cells) > 0 else '0')
-
-
-sorted_scores = scores[0::2] + scores[1::2]
-sorted_points = points[0::2] + points[1::2]
+ current_table.append({
+ 'score': score,
+ 'points': (point_cells)[0].text if len(point_cells) > 0 else '0'
+ })
+scores[current_table_no] = current_table
score_regex = re.compile(r'^([1-7])([cdhns])(x?)([ENSW])([cdhs]([AKQJ2-9]|10))(=|(-|\+)[1-7])')
for room in [1, 2]:
- for tabl in range(1, 6):
- score = sorted_scores[(room - 1) * 5 + tabl - 1]
- point_result = sorted_points[(room - 1) * 5 + tabl - 1]
+ for tabl in scores.keys():
+ score = scores[tabl][room - 1]['score']
+ point_result = scores[tabl][room - 1]['points']
parsed_score = re.match(score_regex, score)
if parsed_score:
contract = ('%s %s %s' % (