FOK!forum / Digital Corner / Webscraper tips
viagraapmaandag 7 april 2025 @ 13:55
Als dit beter in het AI-subforum kan hoor ik het graag :s)

Ik wil graag een webscraper of tool instellen danwel gebruiken om van deze website bepaalde locaties te filteren en daar de evenementen van een bepaalde periode terug kunnen vinden. De website van Uitagenda Rotterdam is goed opgezet maar ook een beetje zoeken naar een speld in een hooiberg.

Dus zeg dat ik van een tiental venues de agenda uit wil lezen adhv deze website voor een week of een maand, wat is dan een makkelijke webscraper? Of kan ik beter de websites van die venues gebruiken als bron?

Of optie drie: ik laat een chatGPT zo'n tool bouwen. Ik ben best aardig onderlegd qua ICT maar bijvoorbeeld Parsehub gaat me ondanks tutorial de pet te boven.
junkiesietzedinsdag 15 april 2025 @ 09:12
als ik niet weet hoe iets moet vraag altijd, make me a .bat file that automates all this shit
Feoladinsdag 15 april 2025 @ 09:29
Het is nog veel makkelijker, ik keek ff snel in devtools en ik zie dat je gewoon een GET endpoint kunt aanroepen en je krijgt een json response met alle events.

Of dit mag is een tweede, maar makkelijker dan dit ga je het niet krijgen.

Edit: je kunt ook de datum erin stoppen, en genres.
Farenjidinsdag 15 april 2025 @ 10:57
quote:
99s.gif Op dinsdag 15 april 2025 09:29 schreef Feola het volgende:
Het is nog veel makkelijker, ik keek ff snel in devtools en ik zie dat je gewoon een GET endpoint kunt aanroepen en je krijgt een json response met alle events.

Of dit mag is een tweede, maar makkelijker dan dit ga je het niet krijgen.

Edit: je kunt ook de datum erin stoppen, en genres.
Dit is het beste antwoord.

https://www.uitagendarott(...)ementen=0&datum=&p=1
viagraapdinsdag 15 april 2025 @ 12:03
quote:
14s.gif Op dinsdag 15 april 2025 10:57 schreef Farenji het volgende:

[..]
Dit is het beste antwoord.

https://www.uitagendarott(...)ementen=0&datum=&p=1
Ik heb geen idee waar ik naar kijk hier.
Farenjidinsdag 15 april 2025 @ 12:16
quote:
0s.gif Op dinsdag 15 april 2025 12:03 schreef viagraap het volgende:

[..]
Ik heb geen idee waar ik naar kijk hier.
Een json feed waar de data in staat die je zoekt.
viagraapdinsdag 15 april 2025 @ 12:46
Zodra ik tijd heb om te googlen hoe dat werkt zal ik je daarna bedanken.
viagraapdinsdag 15 april 2025 @ 16:52
quote:
1s.gif Op dinsdag 15 april 2025 12:46 schreef viagraap het volgende:
Zodra ik tijd heb om te googlen hoe dat werkt zal ik je daarna bedanken.
Dit gaat mij echt compleet de pet te boven, geen idee wat ik ermee moet of kan.
Farenjidinsdag 15 april 2025 @ 17:21
quote:
0s.gif Op dinsdag 15 april 2025 16:52 schreef viagraap het volgende:

[..]
Dit gaat mij echt compleet de pet te boven, geen idee wat ik ermee moet of kan.
Hier kan chatgpt je vast wel bij helpen.
viagraapwoensdag 16 april 2025 @ 12:39
quote:
1s.gif Op dinsdag 15 april 2025 17:21 schreef Farenji het volgende:

[..]
Hier kan chatgpt je vast wel bij helpen.
Ik weet niet eens wat ik die moet vragen zo weinig begrijp van waar ik naar kijk op die json.
Feolawoensdag 16 april 2025 @ 13:06
En je was nog wel aardig onderlegd zei je. Dit lijkt me nou niet een enorm lastige prompt die je moet bedenken.
Farenjiwoensdag 16 april 2025 @ 13:37
quote:
0s.gif Op woensdag 16 april 2025 12:39 schreef viagraap het volgende:

[..]
Ik weet niet eens wat ik die moet vragen zo weinig begrijp van waar ik naar kijk op die json.
Wat begrijp er er niet van? In pagedList.items staat toch gewoon een lijst van events? Lijkt me allemaal vrij zelfbeschrijvend.
viagraapwoensdag 16 april 2025 @ 14:04
quote:
99s.gif Op woensdag 16 april 2025 13:06 schreef Feola het volgende:
En je was nog wel aardig onderlegd zei je. Dit lijkt me nou niet een enorm lastige prompt die je moet bedenken.
Vergeleken met mijn omgeving, die blijkbaar extreem digibeet is.
viagraapwoensdag 16 april 2025 @ 14:06
quote:
0s.gif Op woensdag 16 april 2025 13:37 schreef Farenji het volgende:

[..]
Wat begrijp er er niet van? In pagedList.items staat toch gewoon een lijst van events? Lijkt me allemaal vrij zelfbeschrijvend.
Als je die items 0 t/m 21 bedoelt staat daar idd een lijst maar niet wat ik zoek en ik heb geen idee hoe je de totstandkoming van die lijst kunt aanpassen.
Chandlerzondag 20 april 2025 @ 11:13
quote:
0s.gif Op dinsdag 15 april 2025 12:03 schreef viagraap het volgende:

[..]
Ik heb geen idee waar ik naar kijk hier.
Spijt mij donders, maar als je dit niet begrijpt is je noemer ICT je onwaardig...

Maar dat gezegd is dit de juiste methode om data te filteren, de hoster is blijkbaar zo aardig om een json stream beschikbaar te hebben! :Y

quote:
0s.gif Op woensdag 16 april 2025 14:06 schreef viagraap het volgende:

[..]
Als je die items 0 t/m 21 bedoelt staat daar idd een lijst maar niet wat ik zoek en ik heb geen idee hoe je de totstandkoming van die lijst kunt aanpassen.
Dat kun je waarschijnlijk ook niet, wel kun je zelf met een klein beetje programmeren middels chatGPT zelf de data filteren.
viagraapvrijdag 9 mei 2025 @ 11:47
quote:
0s.gif Op zondag 20 april 2025 11:13 schreef Chandler het volgende:

[..]
Spijt mij donders, maar als je dit niet begrijpt is je noemer ICT je onwaardig...

Maar dat gezegd is dit de juiste methode om data te filteren, de hoster is blijkbaar zo aardig om een json stream beschikbaar te hebben! :Y
[..]
Dat kun je waarschijnlijk ook niet, wel kun je zelf met een klein beetje programmeren middels chatGPT zelf de data filteren.
Ik weet in ieder geval beter wat ik moet vragen nu, dat is iets. Bedankt! Ook aan de anderen hier die hebben meegedacht :)

Is een IT'er iets anders dan een ICT'er trouwens? Want IT'er ben ik hoe dan ook geweest niet heel lang geleden.
raptorixvrijdag 9 mei 2025 @ 15:07
Ik schrijf best veel spiders, dus was voor mij redelijk eitje, de velden mag je zelf aanvullen, het is even snel geschreven in Powershell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$continue = $true
$counter = 1
$output = "sep=,`n""lokatie"",""title"",""date""`n"
while ($continue) {
    $result = Invoke-RestMethod "https://www.uitagendarotterdam.nl/umbraco/api/Entity/GetProductions?id=1083&isMobile=false&culture=nl-NL&toonmeerdaagseevenementen=0&datum=&p=$($counter)"
    foreach($item in $result.pagedList.items){
        $output += """$($item.location.title)"",""$($item.title)"",""$($item.date)""`n"
    }
    if($result.pagedList.items.Count -eq 0){
        $continue = $false;
    }
    $counter++
}

$output | Out-File -FilePath .\result.csv

Of in Python (via Chatgtp), location moet je even zelf uitvogelen:

i
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
mport requests
import csv

continue_fetching = True
counter = 1
filename = "resultp.csv"

with open(filename, mode="w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file, quoting=csv.QUOTE_ALL)
    writer.writerow(["lokatie", "title", "date"])

    while continue_fetching:
        url = f"https://www.uitagendarotterdam.nl/umbraco/api/Entity/GetProductions?id=1083&isMobile=false&culture=nl-NL&toonmeerdaagseevenementen=0&datum=&p={counter}"
        response = requests.get(url)
        data = response.json()

        items = data.get("pagedList", {}).get("items", [])

        if not items:
            continue_fetching = False
            break

        for item in items:
            title = item.get("title", "")
            date = item.get("date", "")
            writer.writerow([title, date])

        counter += 1
raptorixzondag 11 mei 2025 @ 08:13
@viagraap quote je even misschien dat je oplossing had gemist ;)
viagraapmaandag 12 mei 2025 @ 18:21
Bedankt!