-
Notifications
You must be signed in to change notification settings - Fork 4
/
soup-zooi.py
47 lines (40 loc) · 1.73 KB
/
soup-zooi.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
import csv
import requests
from bs4 import BeautifulSoup
output_bestand = 'programmas.csv'
einde = 25
data = [f'{x:02d}-02-2024' for x in range(1, einde)]
def soup():
zenders = ['Radio-10', 'Sky-Radio', 'Qmusic', 'Radio-Veronica', 'Radio-538', 'NPO-Radio-2', 'NPO-Radio-3', 'NPO-Radio-5']
zenders_slug = {
'Radio-10': '10',
'Sky-Radio': 'Sky',
'Qmusic': 'Q',
'Radio-Veronica' : 'Veronica',
'Radio-538': '538',
'NPO-Radio-2': '2',
'NPO-Radio-3': '3',
'NPO-Radio-5': '5'
}
for zender in zenders:
for datum in data:
response = requests.get(f'https://www.oorboekje.nl/{zender}/{datum}#programmering', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(response.content, 'html.parser')
programmas = soup.find_all("p", {"class": "pgProgTijdEnTitel"})
i = 0
for p in programmas:
programma_string = str(p.contents[0]).strip()
begintijd, naam_en_omroep = programma_string.split(' ', 1)
naam, omroep = naam_en_omroep.split(' (') if "(" in naam_en_omroep else [naam_en_omroep, '']
if i < len(programmas)-1:
volgende_programma_string = str(programmas[i+1].contents[0]).strip()
eindtijd, _ = volgende_programma_string.split(' ', 1)
else:
eindtijd = naam[2:7]
naam = naam[8:]
with open(output_bestand, 'a+', newline='') as file:
writer = csv.writer(file)
writer.writerow([datum, begintijd, eindtijd, zender, zenders_slug[zender], naam, omroep[:-1]])
i += 1
if __name__ == '__main__':
soup()