-
Notifications
You must be signed in to change notification settings - Fork 0
/
Elections_scraper.py
57 lines (47 loc) · 2.22 KB
/
Elections_scraper.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
52
53
54
55
56
57
import sys
from nacteni_promennych import validovat_promenne
from rozdelani_html import ziskat_odpoved, rozdelat_html, najit_vsechny_tagy, vytvorit_odkaz_k_obci, najit_konkretni_tag, vratit_vysledek
from vygenerovani_vystupu import zapsat_data
def spustit_scraper():
strany = dict()
vystup_txt: list() = []
obec_odkaz = ""
seznam = []
promenne_lze_nacist = validovat_promenne(sys.argv)
if promenne_lze_nacist:
odkaz_stranky = sys.argv[1]
nazev_souboru = sys.argv[2]
else:
quit()
odpoved = ziskat_odpoved(odkaz_stranky)
rozdelene_html = rozdelat_html(odpoved)
tables = najit_vsechny_tagy(rozdelene_html, 'table')
print("🛸 Stahují se data... 🛸")
for table in tables:
tr_tags = najit_vsechny_tagy(table, 'tr')
for row in tr_tags:
# TODO def
td_tags = row.find_all('td', ['cislo', 'overflow_name'])
if(td_tags != []):
obec_odkaz = vytvorit_odkaz_k_obci("https://volby.cz/pls/ps2017nss/", td_tags[0].a.get("href"))
odpoved = ziskat_odpoved(obec_odkaz)
rozdelene_html = rozdelat_html(odpoved)
tables = najit_vsechny_tagy(rozdelene_html, 'table')
for table in tables[1::]:
rows = najit_vsechny_tagy(table, 'tr')
for row in rows:
column = najit_vsechny_tagy(row, 'td')
if column != [] and column[1].text != "-":
klic = column[1].text
hodnota = column[2].text
strany.update({klic: hodnota})
vystup_txt = vratit_vysledek(td_tags[0].text,
td_tags[1].text,
najit_konkretni_tag(tables[0], 'td', {"headers": "sa2"}),
najit_konkretni_tag(tables[0], 'td', {"headers": "sa3"}),
najit_konkretni_tag(tables[0], 'td', {"headers": "sa6"}),
strany)
seznam.append(vystup_txt)
zapsat_data(seznam, nazev_souboru)
print("Scraper se ukončuje. 📯")
quit()