abonnement Unibet Coolblue
pi_205813964
Ik wil een excel sheet bouwen die van alle supermarkten de meest actuele prijzen bijhoud en aangeeft waar op welk moment de boodschappen het goedkoopst zijn.

Echter pakt de excel optie "gegevens ophalen van web" de websites van de supermarkten niet. Ik heb ergens ook het idee dat ze dit bewust doen om te voorkomen dat bijv. concurrenten te makkelijk hun prijzen kunnen zien.

Heeft iemand een idee hoe ik eventueel toch de prijzen van bijv. ah.nl of jumbo.com automatisch kan laden in Excel?
pi_205814009
Niet je eigen scraper en parser in Phython bouwen :')
M'n schoenen zijn gejat, maar ik hoef niet meer naar buiten, want er is nog wel wat.
pi_205814032
quote:
0s.gif Op donderdag 1 september 2022 18:58 schreef stephano1990 het volgende:
Ik heb ergens ook het idee dat ze dit bewust doen om te voorkomen dat bijv. concurrenten te makkelijk hun prijzen kunnen zien.
:').

Je zal die data moeten scrapen.

Het is geen overzichtelijk tabelletje die je eventjes kan inladen. :').
pi_205814592
quote:
0s.gif Op donderdag 1 september 2022 19:04 schreef YStec het volgende:

[..]
:').

Je zal die data moeten scrapen.

Het is geen overzichtelijk tabelletje die je eventjes kan inladen. :').
Dat heb ik gemerkt, maar de informatie staat wel telkens op de zelfde plaats in de webpagina als tekst weergegeven. Het lijkt mij dat het dus mogelijk moet zijn op de een of andere manier om exact naar dit stukje tekst op de website te linken?
pi_205814986
quote:
0s.gif Op donderdag 1 september 2022 20:13 schreef stephano1990 het volgende:

[..]
Dat heb ik gemerkt, maar de informatie staat wel telkens op de zelfde plaats in de webpagina als tekst weergegeven. Het lijkt mij dat het dus mogelijk moet zijn op de een of andere manier om exact naar dit stukje tekst op de website te linken?
Ik zal het antwoord voor de 3de keer geven: je moet die data scrapen en parsen
pi_205815934
Is er al gezegd dat webscaping with python een goed boek is.
pi_205816424
quote:
0s.gif Op donderdag 1 september 2022 20:51 schreef SnodeSnuiter het volgende:

[..]
Ik zal het antwoord voor de 3de keer geven: je moet die data scrapen en parsen
Ah, ik las er overheen inderdaad, ik heb inmiddels een chrome extention gedownload en ben aan het uitvogelen hoe het werkt :)
pi_205822918
Is het inmiddels gelukt :P
pi_205827020
Dat gaat je niet zomaar lukken, zelfs als je het voor elkaar krijgt je scraper te maken (je dient zeker basis kennis van scripten/programmeren te hebben), dan nog is de kunst dat je ook de juiste mappings moet maken, daarnaast is mijn ervaring dat je een beetje geluk moet hebben met het interne formaat (als men al gebruikt maakt van een API).

Als voorbeeld, die van AH is goed te doen, maar de kans is groot dat je toch tegen allerlei uitdagingen aan gaat lopen. Dit is bijvoorbeeld de bron API van AH:

https://www.ah.nl/zoeken/(...)1&size=100&query=%20

Kortom je moet een paging mechanisme maken en dan de JSON parsen. Vervolgens moet je dit in een database gaan opslaan, en het zelfde trucje gaan doen voor de andere supermarkten, vervolgens moet je de verschillende supermarkten op elkaar gaan mappen, en daar zit meestal de pijn omdat dit gewoon deels handmatig werk is.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_205827772
Omdat ik natuurlijk een enorm toffe peer ben, heb ik even een Powershell Scraper voor de AH gemaakt:

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
$products = @()

$priceRanges = 0..10
$priceRanges += 100

for ($num = 0 ; $num -le $priceRanges.Count ; $num++){
    $continue = $true
    $page=1
    while($continue -eq $true){
        $apiUrl = "https://www.ah.nl/zoeken/api/products/search?size=100&minPrice=$($priceRanges[$num])&maxPrice=$($priceRanges[$num+1])&page=$page"
        $Response =  Invoke-WebRequest -URI $apiUrl -SkipHttpErrorCheck
        write-output $products.Count
        if($Response.StatusCode -ne 400){
            $FullResultObject = $Response.Content | ConvertFrom-Json -Depth 50
            if($FullResultObject.cards.Count -eq 0){
                $continue = $false

            }
            foreach($card in $FullResultObject.cards){
                $products += $card.products
            }
            $page++
        }
        else {
            $continue = $false
        }
    }
    
}
$outputProduct = @()
foreach($product in $products){
    $customProduct = [PSCustomObject]@{
        Merk     =  $product.brand
        Naam =      $product.title
        Prijs    =  $product.price.now
        unitSize    =  $product.price.unitSize
    }
    $outputProduct += $customProduct 
}
$csvData = $outputProduct | ConvertTo-Csv -NoTypeInformation -Delimiter ';'
Set-Content -Path 'C:\temp\ah.csv' -value $csvData
Write-Output 'Done'

Resultaat: https://docs.google.com/s(...)7kLq8QwkKPeE/pubhtml
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_205885654
Overigens zag ik de lol er van in, en heb ik hem verbeterd, in deze zaten wat bugs waardoor ik producten miste, ik heb inmiddels ook versies, voor Jumbo en Dirk. Zal proberen uit te werken en elke dag er 1 bij te maken voor een supermarkt, misschien leuk om hier een website voor te maken of de data te opensourcen.
🕰️₿🕰️₿🕰️₿🕰️₿🕰️₿🕰️ TikTok next Block
pi_205888035
quote:
0s.gif Op zaterdag 3 september 2022 10:17 schreef raptorix het volgende:
Omdat ik natuurlijk een enorm toffe peer ben, heb ik even een Powershell Scraper voor de AH gemaakt:
[ code verwijderd ]

Resultaat: https://docs.google.com/s(...)7kLq8QwkKPeE/pubhtml
quote:
0s.gif Op woensdag 7 september 2022 23:18 schreef raptorix het volgende:
Overigens zag ik de lol er van in, en heb ik hem verbeterd, in deze zaten wat bugs waardoor ik producten miste, ik heb inmiddels ook versies, voor Jumbo en Dirk. Zal proberen uit te werken en elke dag er 1 bij te maken voor een supermarkt, misschien leuk om hier een website voor te maken of de data te opensourcen.
Alleen toffe peren doen dit inderdaad, gaaf project zo man :)

[ Bericht 0% gewijzigd door Erasmus op 08-09-2022 10:15:24 ]
pi_209026699
quote:
0s.gif Op zaterdag 3 september 2022 10:17 schreef raptorix het volgende:
Omdat ik natuurlijk een enorm toffe peer ben, heb ik even een Powershell Scraper voor de AH gemaakt:
[ code verwijderd ]

Resultaat: https://docs.google.com/s(...)7kLq8QwkKPeE/pubhtml
Per toeval dat ik dit lees. Best grappig dat dit kan.
Maar hoe doe je dit? Ik zie hier geen data in staan.

Vind wel ff grappig om dit te begrijpen :P
Man is de baas, vrouw kent haar plaats.
pi_209055323
Uitvinder van de biersmiley.
pi_210552021
quote:
7s.gif Op zaterdag 6 mei 2023 12:26 schreef phpmystyle het volgende:

[..]
Per toeval dat ik dit lees. Best grappig dat dit kan.
Maar hoe doe je dit? Ik zie hier geen data in staan.

Vind wel ff grappig om dit te begrijpen :P
Je kunt maximaal 1500 resultaten(?) per keer opvragen. Is het niet mogelijk om de volgende 1500 resultaten weer te geven d.m.v. die ULR? Bijv: ?page=2
pi_210552047
Ik heb een tijd terug in Python een bijna winkelonafhankelijke scraper gemaakt. Leuk projectje(eigenlijk best wel groot geworden), met de dataset wil ik in de toekomst nog wat doen.
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')