Hallo Tweakers,
Ik ben bezig met mijn lesrooster te gebruiken in een python script. Gezien dat deze site erg simpel is opgebouwd heb ik gebruik gemaakt van een html-scraper.
Nu is mijn lesrooster niet altijd constant. Gelukkig is er een verband te zien tussen een tussenuur en het aantal \n dat er meegestuurd word door urllib.
Bij een tussenuur zijn er 4 \n tags achter elkaar, en normaal gezien maar 2, tussen iedere rij in. Deze \n tags heb ik vervangen door het ~ symbool.
Nu is mijn vraag: hoe kan ik ervoor zorgen dat 4 opeenvolgende tags worden vertaald naar iets als tussenuur, en als het er 2 achter elkaar zijn weglaten.
Dit is de code die ik al heb:
en dit is de output:
['1e uur', '~', '~', 'jns', '065', 'wisB', 'F', '~', '~', 'ker', '018', 'in', 'C', '~', '~', '~', '~', 'kel', '081', 'biol', 'C', '~', '~', 'jns', '061', 'wisB', 'F', '2e uur', '~', '~', 'sto', '095', 'nat', 'E', '~', '~', '~', '~', 'jns', '060', 'wisB', 'F', '~', '~', 'hab', '083', 'anw', '~', '~', 'bmj', '053', 'entl', 'J', '3e uur', '~', '~', '~', '~', 'wes', '018', 'ckv', 'A', '~', '~', 'zew', '057', 'fatl', 'B', '~', '~', 'ker', '018', 'in', 'C', 'kel', '081', 'biol', 'C', '~', '~', 'smol', '024', 'lo', 'brg', '024', 'lo', '4e uur', '~', '~', 'tws', '086', 'schk', 'A', '~', '~', 'sto', '095', 'nat', 'E', '~', '~', 'hab', '083', 'anw', '~', '~', 'wes', '018', 'ckv', 'A', '~', '~', 'smol', '024', 'lo', 'brg', '024', 'lo', '5a', '~', '~', '~', '~', 'vld', '064', 'lv', '~', '~', 'geu', '059', 'netl', '~', '~', 'geu', '059', 'netl', '~', '~', '5b', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~', '6e uur', '~', '~', 'mdk', '081', 'nlt', 'D', '~', '~', 'geu', '059', 'netl', '~', '~', 'ker', '018', 'in', 'C', 'kel', '081', 'biol', 'C', '~', '~', 'sto', '095', 'nat', 'E', '~', '~', '7e uur', '~', '~', 'jns', '060', 'st', 'D', '~', '~', '~', '~', 'mdk', '084', 'nlt', 'D', '~', '~', '~', '~', '8e uur', '~', '~', '~', '~', 'tws', '084', 'schk', 'A', '~', '~', 'bmj', '006', 'entl', 'J', '~', '~', 'zew', '057', 'fatl', 'B', '~', '~', '9e uur', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~', '10e uur', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~', '11e uur', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~']
Ik ben bezig met mijn lesrooster te gebruiken in een python script. Gezien dat deze site erg simpel is opgebouwd heb ik gebruik gemaakt van een html-scraper.
Nu is mijn lesrooster niet altijd constant. Gelukkig is er een verband te zien tussen een tussenuur en het aantal \n dat er meegestuurd word door urllib.
Bij een tussenuur zijn er 4 \n tags achter elkaar, en normaal gezien maar 2, tussen iedere rij in. Deze \n tags heb ik vervangen door het ~ symbool.
Nu is mijn vraag: hoe kan ik ervoor zorgen dat 4 opeenvolgende tags worden vertaald naar iets als tussenuur, en als het er 2 achter elkaar zijn weglaten.
Dit is de code die ik al heb:
Python:
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
| from html.parser import HTMLParser import urllib.request website=urllib.request.urlopen("http://roosters5.gepro-osi.nl/roosters/rooster.php?leerling=124744&type=Leerlingrooster&afdeling=4v&tabblad=0&school=590") website_html=str(website.read()) website=[''] class TableParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.in_td = False def handle_starttag(self, tag, attrs): if tag == 'td': self.in_td = True def handle_data(self, data): if self.in_td: global website if "\\n" in data or "\\\n" in data: data="~" website.append(data) def handle_endtag(self, tag): self.in_td = False p = TableParser() p.feed(website_html) counter=0 index=0 del website[:website.index("1e uur")] del website[website.index("Afdrukken"):] print(website) |
en dit is de output:
['1e uur', '~', '~', 'jns', '065', 'wisB', 'F', '~', '~', 'ker', '018', 'in', 'C', '~', '~', '~', '~', 'kel', '081', 'biol', 'C', '~', '~', 'jns', '061', 'wisB', 'F', '2e uur', '~', '~', 'sto', '095', 'nat', 'E', '~', '~', '~', '~', 'jns', '060', 'wisB', 'F', '~', '~', 'hab', '083', 'anw', '~', '~', 'bmj', '053', 'entl', 'J', '3e uur', '~', '~', '~', '~', 'wes', '018', 'ckv', 'A', '~', '~', 'zew', '057', 'fatl', 'B', '~', '~', 'ker', '018', 'in', 'C', 'kel', '081', 'biol', 'C', '~', '~', 'smol', '024', 'lo', 'brg', '024', 'lo', '4e uur', '~', '~', 'tws', '086', 'schk', 'A', '~', '~', 'sto', '095', 'nat', 'E', '~', '~', 'hab', '083', 'anw', '~', '~', 'wes', '018', 'ckv', 'A', '~', '~', 'smol', '024', 'lo', 'brg', '024', 'lo', '5a', '~', '~', '~', '~', 'vld', '064', 'lv', '~', '~', 'geu', '059', 'netl', '~', '~', 'geu', '059', 'netl', '~', '~', '5b', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~', '6e uur', '~', '~', 'mdk', '081', 'nlt', 'D', '~', '~', 'geu', '059', 'netl', '~', '~', 'ker', '018', 'in', 'C', 'kel', '081', 'biol', 'C', '~', '~', 'sto', '095', 'nat', 'E', '~', '~', '7e uur', '~', '~', 'jns', '060', 'st', 'D', '~', '~', '~', '~', 'mdk', '084', 'nlt', 'D', '~', '~', '~', '~', '8e uur', '~', '~', '~', '~', 'tws', '084', 'schk', 'A', '~', '~', 'bmj', '006', 'entl', 'J', '~', '~', 'zew', '057', 'fatl', 'B', '~', '~', '9e uur', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~', '10e uur', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~', '11e uur', '~', '~', '~', '~', '~', '~', '~', '~', '~', '~']