Tweaker ontwikkelt website om productprijzen van supermarkten te vergelijken

Tweaker Skit3000 heeft een site ontwikkeld waarmee Nederlanders prijzen uit supermarkten kunnen vergelijken. Via checkjebon.nl kunnen gebruikers boodschappenlijstjes invoeren of een kassabonnetje inscannen. De site controleert bij welke supermarkt het lijstje het goedkoopst is.

Ontwikkelaar Sjoerd van der Hoorn, op Tweakers bekend als Skit3000, geeft op Github meer uitleg over de werking van checkjebon.nl. Zijn website maakt gebruik van tesseract-OCR-software om tekst te herkennen op kassabonnetjes waarna er ook nog onderliggende processing wordt gedaan om namen van producten te herkennen. De site probeert aan elke ingevoerde productnaam vervolgens een product te koppelen. Eerst wordt er gezocht naar exact dezelfde productnaam, maar als die niet wordt gevonden, zoekt het algoritme naar een bredere omschrijving. Het algoritme zoekt in dat geval naar productnamen waarin alle letters in dezelfde volgorde voorkomen als ze zijn opgegeven. Die letters hoeven niet aan elkaar geschreven te staan waardoor meerdere producten in aanmerking kunnen komen.

Als er een inhoudsmaat of gewicht wordt meegegeven, filtert het algoritme alle producten uit die minder dan de opgegeven waarde bevatten. Als er hierdoor geen resultaten te zien zijn, wordt het filter ongedaan gemaakt. De resultaten worden door het algoritme op kostprijs gerangschikt en enkel het goedkoopste artikel dat in een bepaalde supermarkt te vinden is, wordt vervolgens weergegeven als de vergelijkbare optie in een andere supermarkt.

Skit3000 gebruikt daarvoor Node-RED, zegt hij tegen Tweakers. "Dat is een handige tool om snel prototypes mee te ontwikkelen, omdat je allerlei verschillende blokken functionaliteit aan elkaar kunt plakken zonder dat je eerst zelf allerlei dependencies hoeft te downloaden. De visuele omgeving laat je makkelijk de output van nodes inspecteren en maakt Node-RED voor NodeJS eigenlijk wat Jupyter is voor Python. De Inject-node, waarmee je handmatig een flow kunt starten, kun je met een paar klikken ook gelijk opzetten zodat het op gezette tijden de flow start zonder dat je zelf bijvoorbeeld een cronjob hoeft aan te maken. Het is ook makkelijk om de connectie tussen twee nodes tijdelijk te verbreken, dus terwijl je aan het debuggen bent kun je voorkomen dat je bijvoorbeeld je database vervuilt met allemaal testdata. Voor het scrapen van prijzen is dit ideaal. Als een flow tijdens het scrapen ergens vastloopt kun je het vanuit één omgeving starten, inspecteren wat er misgaat, aanpassingen maken en testen en het daarna gelijk weer in productie toepassen."

checkjebon1

"Alle scrapers beginnen met een Inject-node die dagelijks automatisch wordt getriggerd. Hierna komt een template-node met daarin JavaScript-code die uitgevoerd moet worden in een browser om te navigeren door de site van de betreffende supermarkt. Hierna komt een nbrowser-node die een headless browser start, naar de site van de supermarkt gaat en het script uitvoert."

checkjebon2

"Terwijl dit bezig is, draait een subflow die elke tien seconden een variabele inspecteert die het scrape-script moet wijzigen zodra het klaar is en ondertussen het aantal producten dat tot dan toe is gescrapet, toont. Als er een fout is of de flow komt vast te zitten in een loop zonder nieuwe producten tegen te komen, dan sluit de subflow af via de error-output die ik heb aangemaakt en stuurt de main flow een mail aan mezelf zodat ik weet dat ik hier iets aan moet doen. Zijn er geen fouten en zijn alle pagina's gescrapet, dan wordt de subflow via de ok-output verlaten en worden de producten opgeslagen in een json-bestand."

"Tot slot, als alle scrapers klaar zijn, draait een flow die de verschillende json-bestanden samenvoegt en opschoont. Omdat Checkjebon alle data als één bestand inlaadt en het om meer dan honderdduizend producten gaat, verklein ik de attribuutnamen van 'price', naar 'p', etcetera. Ik dacht dat dit niet nodig was omdat alles via GitHub Pages wordt gehost en ze gzip-compressie toepassen, maar blijkbaar is het token dat gebruikt werd voor 'price' langer dan de acht bits die nodig zijn voor een enkele 'p'. Ik heb nog gekeken om verdere compressie toe te passen door van een json-object over te stappen naar een twee-dimensionale array, maar dat leverde maar een kleine besparing op. Het duurde ook langer om dat weer goed in te lezen in een json-object in de browser van de gebruiker."

checkjebon3

Aangezien zowel de scrapers als de website gebruikmaken van JavaScript, zegt Skit3000 dat hij stukken code kan hergebruiken, zoals die voor het detecteren en omrekenen van hoeveelheden naar liters en kilogram. "Als ik een andere taal had gebruikt, had ik deze code twee keer moeten schrijven."

Checkjebon.nl kan momenteel het assortiment uit Albert Heijn-, Coop, Dirk, Hoogvliet, Jan Linders, Jumbo-, Plus-, Spar- en Vomar-supermarkten uitlezen. Er is beperkt ondersteuning voor het assortiment van Aldi- en DekaMarkt-supermarkten, omdat deze winkels niet alle prijzen van hun waren online delen.

De ontwikkelaar zegt dat alle data lokaal wordt verwerkt. De verwerking van gegevens gebeurt volgens hem in de browser en de resultaten daarvan worden niet bijgehouden op de website of doorverkocht aan adverteerders.

Screenshot Checkjebon.nl
Screenshot Checkjebon.nl

Door Jay Stout

Redacteur

20-12-2022 • 18:35

233 Linkedin Whatsapp

Reacties (233)

233
232
94
15
1
118
Wijzig sortering
Ik heb ook iets vergelijkbaars aan dit gemaakt, eigenlijk vrijwel letterlijk een pricewatch maar dan voor supermarkt producten. Niet met bonnetjes maar data van sites wel. Het werkt eigenlijk goed nu de initiële moeite gedaan is (betrouwbaar sites/APIs scrapen).

Hoewel het mooi is om een van vrijwel alle supermarkten de prijs historie te zien merk ik toch dat het een grijs gebied is. Je loopt namelijk al standaard (afhankelijk van hoe je er naar kijkt) tegen een databankrecht/auteursrecht aan. PicNic verbied scrapen namelijk expliciet in hun voorwaarden.

Wat vrienden en ikzelf gebruiken de site aardig veel maar omdat het nog niet duidelijk is of het nou allemaal helemaal legaal is of niet houd ik het nog een beetje onder de pet.
Misschien dat @Arnoud Engelfriet meer over de juridische kant kan vertellen, maar in mijn ogen gaat databankrecht over gegevens die een organisatie (of persoon) zelf actief verwerkt of ordent om meerwaarde te creëren. Prijzen van producten die door een supermarkt verkocht worden zijn wel een database, maar zijn een bijproduct van andere activiteit, namelijk het verkopen van deze producten en dus geen op zichzelf staand iets wat (denk ik) onder bescherming van de databankwet valt.

Zou iemand een site scrapen waar al prijzen van verschillende supermarkten verzameld zijn, dan is dit wél een aantasting van dat recht.
Het juridisch criterium is dat je investeert in de opbouw (of onderhoud) van de databank zelf. Een databank die een bijproduct is van een andere bedrijfsactiviteit is niet beschermd. Funda haar databank is dus wel beschermd want Funda bv investeert daar enorm in. Een supermarkt heeft geen databankrecht op haar lijst met producten en prijzen want die is een bijproduct van een ander bedrijfsproces, namelijk het verkopen van producten.

De algemene voorwaarden zijn verder niet relevant. Natuurlijk kunnen die je verbieden om gegevens over te nemen, maar dat is alleen bindend als je die voorwaarden aanvaardt. Als je bij de gegevens kan zonder account of API key, dan ben je niet gebonden aan de voorwaarden.
Dus in het kort, de site met alle vergelijkende prijzen is dan wel beschermd?
Is het ook mogelijk om de Lidl nog toe te voegen?
van de site: nee, want die hebben de prijzen niet online.
Mogelijke uitbreiding zou zijn dat gescande bonnen als laatst bekende prijs kunnen dienen. Dan kunnen mensen hun Lidl bonnen uploaden en alle gebruikers voorzien de site dan via prijzen input...
Hmmm... dat maakt het wel lastiger ja ;)
Een snelle blik op de Lidl website leert dat er wel een online assortiment is, maar dat (zoals eerder genoemd) niet alle prijzen te zien zijn. Voor alle aanbiedingen zijn de prijzen wel te scrapen en op te halen via een API, dus dat heeft misschien een kleine meerwaarde. Alleen krijg je dan dus dat heel veel producten niet gevonden kunnen worden in de boncheck, omdat er geen prijzen zijn voor artikelen die niet in de aanbieding zijn.

Wellicht vind @Skit3000 het toch wel handig om alleen de aanbiedingen toe te voegen?

Het kan in ieder geval deels!
Ja, ik las het in de andere comments inderdaad. Enerzijds begrijpelijk dat winkels het niet (volledig) delen; anderzijds ook niet. Ik snap dat je niet altijd de concurrent (zeer eenvoudig) in de kaart wilt spelen, maar je maakt het de prijsvergelijkende klant die je wilt binnenhalen ook moeilijker.
Bovendien mag je dezelfde databank wel gewoon zelf opnieuw maken: je mag hem alleen niet letterlijk kopiëren. Volgens mij is er ooit een rechtzaak geweest over een telefoonboek: een partij beweerde dat ze mensen het telefoon had laten overtikken, wat legaal zou zijn geweest. Maar de uitgever van het originele telefoonboek wist aan te tonen dat het letterlijk gekopieerd was aan de hand van patronen in bepaalde kleine foutjes.
Van de site van Picnic:
Elke nacht vergelijken we onze prijzen met die van de nationale supermarkten met landelijke online dekking: Albert Heijn, Jumbo en PLUS.
Ben wel benieuwd hoe zij dit zelf doen (en dit tegelijkertijd anderen verbieden).
Handmatig natuurlijk 🤣

Een slimme marketeer zou willen detecteren wanneer/hoe ze dat doen en dan op dat moment andere informatie verstrekken 😉

[Reactie gewijzigd door djwice op 21 december 2022 09:35]

Dus als de andere supermarkten het ook zo in hun voorwaarden zouden zetten als Picnic zou dat deel van hun business model wegvallen.
Naar wat ik begrijp schijnt dit dus inderdaad nog handmatig te gebeuren. Al bij diverse winkels met “laagste prijsgarantie” korting gekregen omdat ze niet de laagste prijs hadden. Voor mij was het een kwestie van het artikelnummer op internet intypen en op enter klikken.
Bizar als je het mij vraagt.
Ik denk dat dat terecht is. het zou mij verwonderen dat de 'terms of service' van die websites dit soort oneigenlijk gebruik verbiedt, en dan kunnen de supermarkten onze mede-tweaker heel eenvoudig voor de rechter slepen.
Ten tweede hoop ik dat de software feilloos werkt, want als er fouten zouden zitten in de gescrapete data of in de logica, en daardoor zou een supermarkt benadeeld worden, dan kan deze opnieuw de maker van de software dagvaarden voor het mislopen van klanten.

Misschien niet onmiddellijk relevant, maar ik zou er niet van uitgaan dat deze site een lang leven beschoren is.
Ik vraag mij sterk af of je het kan verbieden... Het is immers gewoon publiek toegankelijke info én het zijn geen persoonsgegevens. Het is ook geen ddos-achtige toestand.

Net als Google maps verbieden alle straten en huizen te tonen op streetview, dat is immers ook publiekelijk toegankelijke info. Dat wordt 'm ook niet toch?
Website scraping wordt weldegelijk als ongewenst gezien, zo zal het ook in de voorwaarden zijn afgedekt.
Naast de data van de supermarkten die je op je eigen website aanbied zorgen dergelijke requests ook wel voor aanzienlijke load die niet bij het gebruik van één user passen.
Er zijn digitale instructie bestanden die wereldwijd standaard zijn waarin een bedrijf kan aangeven wat robots wel mogen en niet mogen en hoe vaak.
Deze standaarden liggen al tien tallen jaren vast (letterlijk).
Robots lezen geen algemene voorwaarden, maar zoeken naar die bestanden op de standaard locatie.
PicNic heeft er voor gekozen hun wensen niet aan robots kenbaar te maken.

Dus juridisch lijkt me dat ze geen poot om op te staan hebben.
Als je bij het scrapen netjes zorgt - door monitoring van response snelheid e.d. - dat je de server niet merkbaar belast en je http/3 verbinding hergebruikt voor elk verzoek, zou de eigenaar niet veel hebben om hard te maken bij een rechter - welke overlast lever je dan immers? beperk je het bedrijf in iets op een onrechtmatige manier?
Het kan zijn dat als je veel verzoeken doet en deze proportioneel zijn t.o.v. ander gebruik dat het bedrijf meetbare extra kosten maakt door het scrapen.
Maar kijken we naar de kosten van cloud based hosting (CDN), dan gaat het om iets minder dan een euro per miljoen tekst pagina's. Dus als je het netjes doet kost de jurist of beheerder die er naar moet kijken in een uur al meer dan jij in een jaar aan extra kosten opleverd.

Bovendien wil PicNic natuurlijk gewoon dat je ze klanten stuurt, daar betalen ze je zelfs voor https://affiliate-net.nl/...as/picnic-nl-familyblend/

[Reactie gewijzigd door djwice op 20 december 2022 23:02]

Zoals in mijn andere reactie aangegeven hebben technische vrijblijvende hulpmiddelen als een robots.txt totaal geen relatie met algemene voorwaarden. Dat een robot geen algemene voorwaarden leest is begrijpelijk, maar uiteindelijk is de maker van de bot (of het bedrijf of de persoon die de betreffende bot inzet) verantwoordelijk voor wat er met de bot gedaan word. En die kan natuurlijk wel gewoon de algemene voorwaarden lezen.

Dat je er geen (of weinig) overlast mee veroorzaakt is ook niet relevant. Op de data die op de website gepubliceerd is, is gewoon intellectueel eigendomsrecht van toepassing. Ook al scrape je maar één pagina per minuut, daardoor gaat dat recht natuurlijk niet verloren.

Ik denk dat je er veel te technisch naar kijkt, om vervolgens te concluderen dat ze juridisch geen poot hebben om op te staan. Een rechter zal er juist juridisch naar kijken, en zal de technische implementatie veel minder interessant vinden. Als er in de algemene voorwaarden staat dat je niet mag scrapen, en die voorwaarden zijn gewoon rechtsgeldig (wat een rechter dan natuurlijk kan toetsen), dan mag je niet scrapen.
Dan is de vraag, is er juridisch een verschil tussen een search-bot of een scraper-bot?
Beiden doen namelijk precies hetzelfde, de info op de pagina doorzoekbaar maken en vindbaar maken.
Sterker nog, Google geeft letterlijk het product, de prijs en of deze op voorraad is bij meerdere supermarkten bij het zoeken naar pindakaas.
Prijzen van producten zijn naar mijn indruk geen intellectueel eigendom. En productnamen zijn eigendom van de leverancier, niet van de supermarkt.

Voor het publiceren van de product/prijs op websites van supermarkten wordt voor zover mij bekend geen intellectuele handeling verricht.

Als ik rechter zou zijn zou ik vragen aan PicNic waarom ze hun voorwaarden niet vertaald hebben naar het formaat dat robots kunnen lezen.
Zeker als ze robots graag beperkende voorwaarden willen geven en daar wereldwijde standaarden voor zijn die zeer algemeen in gebruik zijn.

Dus wellicht de zaak niet eens voor laten komen maar terugsturen en aangeven dat ze eerst zelf hun zaakjes op orde moeten hebben.

Uit je antwoord lijk ik op te kunnen maken dat je zelf nog nooit een scraper gebruikt of geschreven hebt? Kopt dat? Een robot scraper is niets anders dan een geautomatiseerde manier om door de website te navigeren. Minder belastend dan een normaal mens omdat dubbele bestanden op verschillende pagina's niet een 2e keer worden opgevraagd. Ook worden de grote bestanden (bijvoorbeeld in het geval van scrapen van prijzen) zoals plaatjes en scripts niet gedownload door de robot.

Bedenk dat internet is ontworpen voor kennis en informatie delen zonder enige beperking. In voorwaarden iets opnemen waar je mensen niet expliciet ok mee gaan voor gebruik, dingen die tegen normaal gebruik in gaan of gebroken moeten worden voordat je ze kunt lezen, zijn per definitie nietig.

Stel ik heb een voorlees robot die op basis van mijn stem commando's navigeert. Mag een bedrijf dan hun publieke website voor mij beperken? En als dat gedaan wordt door dit slechts in de voorwaarden te vermelden, hebben die voorwaarden dan enige rechtsgeldigheid?
Op welke grond mag een bedrijf een publieke website voor een bepaalde doelgroep beperken? En willen we dat wel? Internet is ontworpen om te delen, daarom kun je referen naar publieke filmpjes en plaatjes op andere websites en is dat geen nieuwe openbaar making.

Als ik altijd een robot gebruik om websites te bekijken, dan kan ik de voorwaarden alleen lezen nadat ik ze heb overtreden. Bovendien is het zeer ongebruikelijk dat mensen de voorwaarden van een publieke website lezen. Leest u de voorwaarden van elke fysieke winkel waar u binnenloopt ook voordat u er binnen gaat. En gebruikt u in de winkel wel eens een handscanner? Bent u dan niet de prijzen aan het scrapen?
Het is ook een nogal tegenstrijdig dat supermarkten hun producten enerzijds speciaal online zetten zodat je kunt zien wat ze aanbieden, wat er in zit, wat het kost etc en graag gevonden willen worden door zoekmachines, maar als er dan iemand het vergelijken makkelijker maakt, zou dat niet mogen.
Je kan in je ToS wel zetten dat je het niet wilt, en dat je mensen zal blokkeren die het toch doen, maar dat maakt het niet illegaal
Dat iets in een ToS staat, maakt het nog niet zo dat je er ook over kan gaan procederen
Uiteraard wel.
De eerste zin van een ToS zal altijd zijn 'door het gebruik van deze website ga je akkoord met deze ToS'. Er komt dus een contract tot stand tussen de bezoeker en de uitbater van de website. En als jij als bezoeker de ToS schendt, dan kan de uitbater van de website beslissen om erover te procederen.

In het geval van picnic.app bvb:
https://picnic.app/nl/algemene-voorwaarden/
"De algemene voorwaarden zijn van toepassing als je de Picnic-app (de “app”) of de website www.picnic.app (de “website”) gebruikt, en gelden ook voor alle informatie, diensten en leveringen die we via de app of de website aanbieden (de “diensten”)."
en in 12.2:
"Wat ook niet is toegestaan – houd je vast, dit moeten we even dichttimmeren – is: (a) een substantieel gedeelte van de inhoud van de app en/of website opvragen en hergebruiken en/of niet-substantiële delen van de inhoud van de app en/of website herhaald en systematisch opvragen en hergebruiken; en/of (b) soft- of hardwaretools (laten) gebruiken die erop gericht zijn door Picnic toegankelijk gemaakte informatie over te nemen, te spideren, te scrapen, te doorzoeken of op een vergelijkbare, niet door Picnic toegestane wijze te gebruiken."

[Reactie gewijzigd door zenlord op 21 december 2022 14:23]

Algemene voorwaarden op deze manier zijn niet af te dwingen en zeker niet houdbaar in een rechtszaak.
Dus het scrapen is legaal, al vinden ze het niet leuk.
Algemene voorwaarden worden pas bindend als beide partijen EXPLICIET ermee akkoord gaan.
Bijvoorbeeld de huisregels in de supermarkt, daar staat vaak dat het personeel bij de uitgang / kassa je tas mag controleren. Dat mogen ze echter niet. Als ze denken dat je echt wat gestolen hebt, is er het burgerarrest en moeten ze je zsm overdragen aan de politie. Maar ze mogen niet zelf tassen gaan controleren. Wat wel kan, is je de winkel uitzetten en je niet meer toelaten omdat je je niet aan die huisregel wilt houden.
Andersom kan het wel: je tas open moeten laten zien voordat je een bioscoop in mag, dat kan wel. Dat is hun regel en ze vragen je expliciet daarmee akkoord te gaan. Je bent natuurlijk helemaal niet wettelijk verplicht je tas te openen, maar dan mag je hun zaal niet in.
Dus Picnic vindt scrapen niet leuk, kan juridisch niks tegen je beginnen maar mag prima het ip-adres van jouw scraper blokkeren.
Algemene voorwaarden op deze manier zijn niet af te dwingen en zeker niet houdbaar in een rechtszaak.
Mag ik even weten welke je bron is voor die bewering? Als jurist interesseert het mij namelijk wel, en ik heb geen enkele kennis van wetgeving of rechtspraak die zo algemeen stelt dat 'algemene voorwaarden op websites niet afdwingbaar zijn'.
Zo'n ToS werkt hooguit als onderbouwing om iemand te blokkeren van een website, een rechtszaak ga je er niet mee winnen
Zo'n ToS werkt hooguit als onderbouwing om iemand te blokkeren van een website, een rechtszaak ga je er niet mee winnen
Neem me niet kwalijk als ik zo'n zin zonder enige onderbouwing niet serieus neem. Op cafe kom je er (misschien) nog mee weg.
Je kunt een proxy er voor zetten en gewone bezoekers via de proxy laten browsen.
Het is zowiezo bijzonder dat ze iets met scrapen in de voorwaarden hebben. Wat zegt hun robots.txt?
https://picnic.app/nl/robots.txt
https://picnic.app/robots.txt

Niets, dus voorwaarden zijn waardeloos.
Ze worden dus gewoon geschrapt door Google,, Bing, maar ook door Palo Alto en vele andere partijen voor diverse doeleinden.

Hier staat hun instructie welke pagina's ze graag willen dat je scrapt:
https://picnic.app/nl/sitemap_index.xml
Wat zegt hun robots.txt? ... Niets, dus voorwaarden zijn waardeloos.
Ik verbaas me eigenlijk hoe je het verband tussen een robots.txt en hun voorwaarden legt. Een robots.txt bestand is een manier om aan te geven welke URL's je niet wil laten indexeren of scrapen. Dat is puur een technische implementatie, en heeft natuurlijk totaal geen juridische waarde.

Als ik op de site van Picnic kijk zie ik overigens ook enkel een paar generieke producten (zonder merk) waarbij een prijs staat. Voor de overige producten moet je de app downloaden en ik neem aan eerst inloggen (heb de app niet gedownload, dus niet 100% zeker over het inloggen). Een robots.txt bestand is puur voor websites. Een zoekmachine gaat niet zomaar de inhoud van een app scrapen, die waarschijnlijk via een of andere API of webservice opgehaald word. En al helemaal niet als je voor die data ingelogd moet zijn (ook niet als de data via een website na login beschikbaar is). Ook in hun sitemap.xml zie ik zo niet direct verwijzingen naar productpagina's terug.

Daarnaast is de inhoud van een robots.txt vrijblijvend. Een (maker van een) bot/scraper kan ervoor kiezen de inhoud daarvan te respecteren (wat de bekende bots/scrapers gelukkig doen), maar kan er ook voor kiezen de robots.txt volledig te negeren en gewoon alles te scrapen. Er zijn zelfs bots die specifiek op zoek gaan naar 'Disallow' URL's in robots.txt bestanden, in de hoop gevoelige informatie te achterhalen. Let dus op wat je daar in plaatst.

Verder zijn er natuurlijk ook nog andere manieren om te vragen (wederom vrijblijvend) of een bot/scraper een bepaalde URL niet wil indexeren. Bijvoorbeeld middels een meta tag of een response header. Het niet aanwezig zijn van een robots.txt zegt dus niets over of een site heeft aangegeven bepaalde pagina's niet te willen indexeren.

TLDR; Technische (vrijblijvende) hulpmiddelen zijn totaal niet gerelateerd aan de voorwaarden :)
Een website kan niet juridisch afdwingen of en hoe je bepaalde pagina's inlaadt. Scrapen kunnen ze dus ook niet 'verbieden'.
Ik zou zeggen: lees bijvoorbeeld de voorwaarden voor het gebruik van Google API’s eens door. Hoe je data gebruikt, hoe en wat er weergegeven wordt, en eventuele caching/opslag is aan regels gebonden.
Google kan jou geen regels opleggen alleen maar doordat jij de pagina binnenhaalt die zij voor iedereen toegankelijk op het net gooien. Dat is een groot misverstand. Als je browser aan Google een seintje geeft "OK, je mag je pagina sturen" en Googles server stuurt de pagina, dat is niet hetzelfde als het tekenen van de een of andere juridisch bindenden overeenkomst. Het maakt niet uit wat Google wil.
Als je voor t gebruik van een api eerst een account moet maken en voorwaarden moet accepteren is t een amder verhaal dan wamneer je zonder account en zonder acceptatie iets ooenbaars kunt gebruiken
Ze kunnen het prima verbieden. Alleen niet tegenhouden. Net zoals je het kan verbieden harder dan 130 te rijden op de snelweg, maar je het niet kunt tegenhouden…
Verkeerd voorbeeld, want met 130+ kun je alsnog geflitst worden. Het is meer zoals iemand die prive een bordje naast zn huis aan de openbare weg neerzet met een tekst dat je daar niet mag parkeren omdat je dan zijn uitzicht belemmert ofzoiets. Als je er dan toch parkeert kun je geen boete krijgen want t bordje is niet rechtsgeldig
Dat flitsen is controleren van de voorwaarden (lees: de wet) voor het deelnemen aan het verkeer. En als je niet voldoet aan die voorwaarden, volgen er consequenties die vooraf gedeeld zijn in die voorwaarden (lees: de wet).
Hoewel die voorwaarden bekend zijn en ervoor gewaarschuwd wordt (middels borden). Kan er nog steeds niet voorkomen worden dat het gebeurd. Anders was flitsen ook niet nodig…

… daarmee is het precies hetzelfde als de voorwaarden voor het gebruik van een (private) dienst/website. Als je die schend, kunnen de consequenties volgen die (over het algemeen) in die voorwaarden staan. De gevolgen moeten natuurlijk binnen de wettelijke mogelijkheden van de eigenaar van de website/dienst zijn. En die opties zijn er zeker, zoals het blokkeren van accounts of op adressen.
Dat is dan ook meteen het verschil. Het ene is wet. Voorwaarden op een website zijn dat niet.
Google heeft geen wettelijke mogelijkheden om jou iets te verbieden. Ze kunnen nog zo veel boze teksten online zetten, daar ben jij niet aan gebonden. Door een louter een webpagina op te halen bind je je nergens aan. Dat is nu precies het verschil met de verkeerswet, waar je als onderdaan van Zijne Majesteit aangebonden bent.

[Reactie gewijzigd door Cerberus_tm op 22 december 2022 05:02]

Als die API's publiek toegankelijk zijn zonder inlog - dus voor iedereen gelijk - dan geldt gewoon hetzelfde als voor al het andere publieke internet verkeer.
Een API is gewoon een web url net als een webpagina of een plaatje.
De API geeft in de meeste gevallen een tekst document terug als reactie, typisch JSON of XML, soms JSONP of een HTML snippet.

API toegang kan technisch beperkt worden met diverse technieken.
API staat voor Application Program Interface, typisch bedoeld voor machines om data op te vragen.

Als je een pagina opvraagt, worden er vaak ook plaatjes, filmpjes, scripts en opmaak ingeladen het laden van deze extra bestanden gaat via de robot die in de browser is verwerkt, de eindgebruiker hoeft niets te doen om die bestanden ook te downloaden, dat doet de robot voor hen. De robot scraper kijkt in het html naar andere linkjes om ook te laden en laad die dan voor de gebruiker. In veel gevallen kijkt de robot ook naar vervolg pagina's, en ook die laad hij dan alvast (pre-load) zodat de gebruiker een snellere interactie heeft. De robot heeft een slim algoritme of krijgt zelfs instructies van de website om te bepalen welke pagina's hij al download voordat de gebruiker op een link geklikt heeft.

Het gebruik van robots is dus een hele normale en veel voorkomende manier, zelfs voor reguliere bezoekers, om een website te bezoeken.
Dit verbieden in de voorwaarden is als het in je voorwaarden verbieden te ademen als je langs een winkelpui, over het stukje stoep dat eigendom is van de winkelier, loopt.

[Reactie gewijzigd door djwice op 21 december 2022 09:32]

Waarom ligt iedereen zo wakker van die voorwaarden. Die zijn voor zover ik weet totaal niet bindend, want om dat te doen zou je ze minimaal aan elke bezoeker moeten presenteren en akkoord laten verklaren. Pas daarna zou je de website mogen bezoeken.
Precies.

En omdat ze levensmiddelen verkopen, waaronder eerste levensbehoeften zoals brood, groente en fruit, mogen ze ook geen onredelijke voorwaarden in zo'n splash screen voorschotelen.
Mensen moeten immers hun eerste levensbehoeften kunnen verkrijgen, dus zullen zich gedwongen voelen akkoord te gaan.
Dus zelfs met een splash screen met voorwaarden zullen ze niet snel bindend zijn.
Ik vind het wel interessant, ik wou eigenlijk ook zo'n project maken, kan je hem delen?
Een kassabon is ook een beetje een overbkdige functie. Je hebt dan immers al boodschappen gedaan.

Een boodschappenlijstje is natuurlijk wel ideaal, dat je vooraf kunt checken adhv wat je nodig hebt
Ik ben gek op dit soort projecten. Vooral de back-end. Het lastige van een goede scraper is dat de supermarkt zijn website nog wel eens aan wil passen en dat je dan weer opnieuw kan beginnen.

En je hoort het van de jurist, dit is niet illegaal. Doe er dus mee wat je wilt.
Het idee is geweldig, maar het werkt totaal nog niet goed (helaas).

Als ik dit lijstje invoer (een vrij simpel lijstje)
  • Melk
  • boter
  • ketchup
  • fanta
  • limonade
Dan krijg ik dit als resultaat bij de eerste link van bijvoorbeeld coop

Melkan Halfvolle koffiemelk cups
70 milliliter 0,39
Mini roomboter appelflappen
50 gram 0,39
Van Wijngaarden Zaanse Curryketchup
160 milliliter 0,93
Duyvis Dipsaus fantasia
6 gram 0,49
Uludag Limonade sinaasappel
330 milliliter

Ik bedoel het niet te negatief, want ik stel het enorm op prijs dat mensen zich in dit soort projecten stoppen, en ik weet zeker dat het met wat aanpassingen echt een geniale tool kan zijn.

[Reactie gewijzigd door Wachten... op 20 december 2022 19:02]

Jep, het lastige is dat je het goedkoopste product wilt zien, maar aan de hand van enkel "melk" heb je tientallen opties. Koffiemelk zoals jij al zegt, maar ook halfvolle, volle, magere, chocolade, soja, palm, kokos, poeder, etc. Zoek je naar 1,5 liter halfvolle melk dan krijg je exact wat je zoekt.

Ik zit nog steeds te denken over een manier om (beter) duidelijk te maken dat je betere resultaten krijgt als je producten specifieker omschrijft. Wie ideeën heeft, kom maar op!
Wellicht het meest gekochte type als eerste optie kiezen als mensen niet specifiek zijn.
En in hun profiel onthouden voor de volgende keer wat ze met 'melk' bedoelden
Bij ons is dat 6 pakken van 2 liter halfvolle melk ;)
Bij mijn schoonzusje een halve liter sojamelk.

Wellicht bij de input die je krijgt de sortering van de grote supermarkt ketens scrapen en daar een slimme statistische keuze op maken. Learn from their experience 😉

[Reactie gewijzigd door djwice op 20 december 2022 22:28]

Het meest gekochte product weet ik niet, maar onthouden wat men de vorige keer met 'melk' bedoelden is wel een interessant idee.

Overigens wordt het boodschappenlijstje nu al terwijl je het intikt in je browser opgeslagen en kan je het delen met anderen zonder dat hier een server tussen zit.
Dat is iets wat wel werkt lijkt me. Ik koop weekelijks denk 80%hl hetzelfde. Dus als je 1x een redelijk lijstje hebt dan ben je er zo ljjkt me.

Ik weet niet of die supermarkt aps ook apis hebben, maar die hebben tegenwoordig ook bon opslaan en lijstje maken. Lijkt mij een mooi input bron, mits je het er uit krijgt natuurlijk.
Klopt en ze hebben ook referral programma's, dus de site kan inkomsten krijgen simpelweg door jou naar de beste deal te leiden.

Win voor jou en win voor de site.
Allereerst geweldig dat je dit ontwikkeld! 80% van wat ik invoer pakt ie goed. Erg handig.

Ik ben benieuwd wat je kunt vinden op de invoer. Als ik zoek op 1 l volle melk krijg ik halfvolle melk. xD Taal en computers blijft lastig natuurlijk.

Een goede omschrijving voor de eindgebruiker qua hoe je moet invoeren zal zeker helpen. Zoek ik op iets van zeg 400 g dan pakt ie soms de letter g als t zoekwoord. Mogelijk dat dit zonder spatie beter gaat.

Succes!
Je kan het volgende maken: een opt-in voor data collectie waardoor jij zelf als website de populariteit van producten kan bijhouden door de inputs van gebruikers en ook zo kan bijhouden wat het vaakst bedoeld word met 'melk' doormiddel van die populariteit of door verdere specificatie van gebruikers.
Is er een mogelijkheid om suggesties te weergeven als je bijvoorbeeld "melk" typt?

Zo werkt het ook op sites zoals Albert Heijn, Jumbo etc. Dit zou (denk ik) het probleem grotendeels verhelpen, omdat je direct kunt selecteren wat je bedoelt.

Ik weet ook niet of er een mogelijkheid is een rangschikking op populariteit? Want als ik melk invoer, dan zou ik verwachten dat 1 liter halfvolle melk in het lijstje komt en niet koffiemelk. Dit is puur even op het gevoel dat er veel meer melk wordt gekocht dan koffiemelk. Maar ik kan me voorstellen dat zo'n mogelijkheid inbouwen vrij lastig is. Je hebt overigens deze populariteits info niet (denk ik).

[Reactie gewijzigd door Wachten... op 20 december 2022 20:21]

Dat was inderdaad ook mijn idee, maar als je letterlijk je hele boodschappenlijst in aan het tikken bent is het best bewerkelijk. Het is ook dan nog lastig om te bepalen welke ~3 producten getoond moeten worden zonder dat je elke keer alsnog verkeerde suggesties krijgt.

Populariteitsinfo is inderdaad (opzettelijk) niet beschikbaar.
Misschien is het wat om zelf, handmatig, een familieboom te maken van producten, waarbij een pak melk bij "melk" bovenaan staat, en de melkkuipjes verder naar onderen. De boom gebruik je dus als een sorteer mechaniek voordat je sorteert op prijs.
Dat lijkt me een goed idee, al maak ik die boom het liefst aan de hand van beschikbare data. Ik kan wel bedenken wat men (waarschijnlijk) het eerst wil zien bij "melk", "boter" of "bloemkool", maar welke producten iemand wil zien die "appel" of "brood" intikt heb ik geen idee van.
Ik heb er te weinig kaas van gegeten, dus weet niet of de mogelijkheid er is, maar ik weet dat bijvoorbeeld Google ook boodschappenlijsjes kan maken. Kun je API's van dit soort partijen misschien niet gebruiken?

Uiteraard is Google maar slechts even een voorbeeld hoor, en ik heb geen idee of zulke API's/data ergens vrij gegeven worden. Maar Home Assistant gebruikt volgens mij ook zoiets voor "shopping list"

Ik gooi gewoon even een idee op. Misschien kun je er wat mee :)
Bij aanklikken keuzes geven.

Keuzes sorteren op vaakst gekozen voor die input.

Standaard de vaaksts gekozen kiezen (niet per se de goedkoopste).

1x 'stemmen' per IP zou goed moeten werken voor Nederland
Misschien is het een idee de gebruiker na het vergelijken of mogelijk zelfs na het typen van een nieuwe regel een "Meer/ander" optie te tonen achter een item waarin de gebruiker alle producten kan inzien en selecteren die aan de term voldoen.
Waarom 3? Je toont alles (max 50 ofzo - als het maar veel lijkt) om de gebruiker aan te moedigen verder te typen totdat hij het gewenste product ziet staan en kan selecteren.

Dit zie je ook vaak bij navigatie apps. Type je 'mediam' dan krijg je tig MediaMarkten. Type je er vervolgens ' ho' achter dan krijg je die in Hoorn. Een wat geoefende gebruiker weet na verloop van tijd precies wat hij minimaal moet intoetsen voor het gewenste resultaat.

In dit geval stel ik me dus voor dat ik iets van '1.5 hal mel' kan typen. (Of elke meer complete variant daarop).
"1.5 hal mel" zou al het gewenste product moeten tonen, maar ik snap het idee. Ik zei ~3 omdat de beschikbare ruimte op je scherm niet heel veel meer toe laat, maar het zou natuurlijk ook een scrollbare popup kunnen zijn.
Dat was inderdaad ook mijn idee, maar als je letterlijk je hele boodschappenlijst in aan het tikken bent is het best bewerkelijk.
Als je heel je lijstje moet intypen + de volledige productnamen, gaan de meeste mensen waarschijnlijk afhaken.

Maar een deel zou het er wel voor over hebben (ik bijvoorbeeld ;)). Als de product-namen op kassabonnen van dezelfde supermarktketen landelijk hetzelfde zijn, zou je dus al snel een deel van de producten 'ge-oormerkt' krijgen met behulp van gebruikers.

In plaats van gebruikers te laten intypen, zou barcodes scannen (met een smartphone) veel accurater en sneller kunnen zijn.
lees ook uit de bon de supermarkt. dan kan je de juiste producten vinden door te matchen op naam en prijs. Dan heb je een betere titel en misschien zelfs EAN nummers
Wellicht zelfs ook streepjes codes?
Dat ik thuis gewoon mijn boodschappen met m'n telefoon scan als ze op zijn.
Gaaf gemaakt 👌🏻🙏🏻
Ik heb zelf maar minimaal ervaring met coderen, dus ik heb geen idee hoe moeilijk het zou zijn, maar mij lijkt een zoekmachine à la Tweakers pricewatch toch wel de meest ideale optie.

Wat misschien ook handig is, is om een dropdown optie te maken met meerdere kolommen.
En dan te beginnen met de hoofdcategorie, en zo steeds nauwkeuriger.
Dus bijvoorbeeld:
Zuivel - melk - koemelk - half vol - 1.5l;
Frisdrank - limonade - aardbei;
Brood - volkoren - heel;
Kaas - Gouda - plakken - jong belegen - 30+
Dat kan, als je die categorieën ook hebt. Supermarkten zelf lossen het op door gewoon ~30 producten op je scherm te tonen inclusief afbeeldingen waardoor je vrijwel altijd direct ziet wat je nodig hebt. Het lastige met zoeken bij meerdere supermarkten tegelijkertijd is dat ze allemaal net even een andere naam gebruiken, je te maken hebt met verschillende merken, etc. Zelfs met een dropdown zoals jij beschrijft moet je er flink doorheen tikken voordat je vindt wat je zoekt.
Je moet de exacte producten kunnen kiezen. bijv. als ik 4 flessen coca cola invoer krijg ik niks terug. En je hebt flessen van 1 ltr, 1,5 ltr (meest gebruikelijk) en 2 ltr.
Wat als je in het geval van meerder matches een gemiddelde pakt van de producten en duidelijk laat zien dat er meerdere opties zijn. Vervolgens kun je de gebruiker de optie geven om te specificeren welk product hij bedoeld of simpelweg alle producten laten zien doormiddel van een uitklap menu (net als een folder structuur)
e.g.:
melk --> 20 producten; avg. price 0,80€ (klik om alle 20 opties uit te klappen)

Alternatief is inderdaad om iets met populariteit te doen. Als genoeg mensen jouw applicatie gebruiken kun je naar verloop van tijd zelf de populariteit bijhouden van ieder product. Maar dan heb je eerst wat meer data nodig ofc.
Een alternatief kan zijn: gebruik ook 'de andere kant op' met wat je nu doet. Zoek het huidige product op op de website van degene van t bonnetje, de combi van prijs en naam brengt je denk ik dichter naar het product.
Van daaruit kan je dan zoeken naar een alternatief.
Mooie website. Je moet inderdaad wel even proberen voordat je bij elke supermarkt een vergelijkbaar product vindt. Dat is op zich niet zo erg.

Het zou ook al handig zijn als ik vlot kan zien welke supermarkt "over het algemeen" wat goedkoper of duurder is. Daar is dat voorbeeld handig voor. Maar dan misschien nog wat extra "gangbare" producten daaraan toevoegen en regelmatig controleren of je voor elke supermarkt een vergelijkbaar product krijgt.
Ik neem aan dat als je je bonnetje scant, je wel een specifieker overzicht krijgt? want daar staat het vaak beter uitgeschreven.
Volgens mij gebruik je het dan verkeerd, als ik het artikel zo lees is dit om van een bestaande bon achteraf te bekijken hoe duur het ergens anders was (om in de toekomst evt te switchen).

Als je dus niet de hoeveelheden/soorten bij je producten zet is het logisch dat je op dit soort uitkomsten uit komt.
Het staat letterlijk in het eerste vetgedrukte stuk:
Tweaker Skit3000 heeft een site ontwikkeld waarmee Nederlanders prijzen uit supermarkten kunnen vergelijken. Via checkjebon.nl kunnen gebruikers boodschappenlijstjes invoeren of een kassabonnetje inscannen. De site controleert bij welke supermarkt het lijstje het goedkoopst is.
Dus nee ik gebruik en lees het niet verkeerd lijkt mij. Het lijkt me ook logischer om vooraf prijzen te weten, dan achteraf.
Ik bedoelde meer dat de tool een specifieker lijstje zal verwachten gezien het detail in vergelijking. Je uitkomst (op de dipsaus na) is namelijk technisch gezien accuraat voor de input.

Als je de hoeveelheid er bij zet op de een of andere manier lijkt het me dat het beter zal werken. (Maar ik heb het niet getest)
Bedankt voor je uitleg, en ik snap wat je bedoelt. Echter is dat precies wat het voor mij (nu nog) onbruikbaar zou maken. Ik typ nooit op de Jumbo site (of wat voor site dan ook) "1 liter halvolle melk". Ik typ gewoon "melk" en klik dan op de suggesties die naar voren komen.

Ik denk persoonlijk ook dat iedereen op die manier zoekt, en niet heel specifiek met gewichten etc.

Ik denk als die suggesties erin zitten, dat @Skit3000 echt iets moois heeft ontwikkeld.
Het staat letterlijk in het eerste vetgedrukte stuk:


[...]


Dus nee ik gebruik en lees het niet verkeerd lijkt mij. Het lijkt me ook logischer om vooraf prijzen te weten, dan achteraf.
Maar je hebt pas een bonnetje achteraf ...
Dus kan je voor een toekomstbezoek anders plannen
Merkte het ook met lays chips daar zijn ook tig varianten gewicht van en de ene super markt heeft die grams wel en de andere weer niet.

Verwacht dat het nog wel verbeteren. Tweakers PW nu en 20 jaar terug is ook een wereld van verschil :).
Voelt een beetje als een grep/regex op een woordje. Wat dan een ‘algoritme’ wordt genoemd.
Het gaat ook niet werken.
Dit komt omdat die supermarkten een prijslijn hebben voor de winkel aan de hand van de locatie en wat er in de buurt zit.

Dus denk aan een Jumbo als die in de buurt van een Hoogvliet of een Dirk van den Broek zit. Dan zal die op een lagere prijslijn zitten. Deze prijslijn geldt voor ALLE producten in die winkel.

Oftewel de Jumbo tegenover de AH = hoge prijslijn
De Jumbo tegenover een Dirk = lagere prijslijn.

Dan kan je dus zomaar hebben dat hetzelfde product een stuk goedkoper is in de ene Jumbo: je kunt dit zien als je in de app wisselt van winkel. Dat is hoe het werkt.
En dan denk je die 10 cent voor dat ene product, maar mik je hele kar maar vol dan heb je het over meerdere euro's ;).
Zie ik inderdaad ook met bonnentje bij lamgs gaan. De prijs die de site toont is anders dan wat ik in de winkel heb betaald voor dat exacte product bij die winkel, zowel duurder als goedkoper. En het juiste product vinden is erg lastig. In plaats van de hele site scrape wil je eigenlijk je zoekopdracht op de gewenste winkelsite gelijktijdig invoeren, en dan uit die opties de gelijkwaardige opties kiezen en vergelijken. Maar snap dat dat niet echt als site is te bouwen, je word da vrijwel direct geblocked met enige traffic.
De Jumbo is (in Nederland) inderdaad een uitzondering. Omdat ik het belangrijk vind dat mensen niet bij de kassa komen en opeens meer moeten betalen dan ze van tevoren dachten, rekent de site op dit moment met de duurste prijslijn. Misschien woon je in de buurt van een "goedkope Jumbo" en komt deze in de vergelijking onterecht duurder naar voren, maar dat is het risico wat de Jumbo zelf neemt. Ik vind het in ieder geval niet kunnen dat ze consumenten die geen keus hebben, hogere prijzen voorschotelen dan consumenten die in de buurt van meerdere supermarkten wonen.

Overigens is een paar jaar geleden toen Super de Boer door Jumbo overgenomen werd, de Super de Boer in mijn dorp als één van de weinige in Nederland niét door hen overgenomen. Jumbo wilde de winkel niet omdat het de enige supermarkt hier is en hun concept draait om het vertellen hoe zij goedkoper zijn dan de concurrent. Ze willen dus niet graag een supermarkt beginnen in de hoogste prijsklasse en zo direct duizenden consumenten het idee geven dat ze duur zijn. Uiteindelijk is er (gelukkig) een zelfstandige partij geweest die de winkel over wilde nemen anders hadden de mensen zonder auto een groot probleem gehad.

Tegen de tijd dat de site kan tonen welke supermarkten bij jou in de buurt zitten, wil ik trouwens wel gaan kijken of ik de verschillende prijslijnen van Jumbo mee kan nemen.
Je zou een boodschappenlijstje moeten maken in een bestaande site (dus alles van bijv ah.nl). Dan kan hij vervolgens checken of je a-merk/huis/budget koos, hoeveelheid noem het maar op. Dat maakt vergelijken eenvoudiger.

Maar dan blijf je met huismerken natuurlijk lastige situaties hebben:

Ah budget 12 eieren : 2 euro
Coop budget 10 eieren: 1,80 euro

Welke beschouwt de scraper als goedkoper?
Iedere supermarkt heeft tegenwoordig ook wel een spaar programma. Jumbo punten en Albert Heijn bonus box.
Ik dacht de prijzen van de Jumbo kunnen verschillen per locatie. Hoe gaat de app daarmee om?
Bij Colruyt en Carrefour België is het ook zo dat de prijs per locatie anders kan zijn maar als je dan op de site een collect en go(in het geval van Colruyt) doet dan nemen ze de duurste prijs. Dit staat bij collect en go ook in hun voorwaarden. Hierdoor kan het zijn dat hun online prijs zelfs duurder is dan bij de concurrentie. Waarschijnlijk zullen de winkels in hun voorwaarden wel ergens vermelden welk soort prijs zij op hun site hanteren. Een scraper kan dus enkel deze prijs nemen die de winkel aanbiedt op de site. Dat ze lokaal goedkoper zijn, moet je in de winkel fysiek gaan bekijken want dat die prijzen zullen niet vermeld zijn op hun site.
Dit hebben wij voor een project voor school ook gebruikt, alleen eerst netjes toestemming aan supermarkten gevraagd of ze akkoord waren met het scrapen van hun data, dit waren ze in alle gevallen niet. Op 1 winkel na mochten wij nergens data van scrapen.

Is een leuk idee alleen jammer dat de meeste supermarkten (in ons geval) niet mee wouden werken

[Reactie gewijzigd door Potter op 20 december 2022 19:10]

Dus je hebt het uit eindelijk niet gedaan
Klopt, een beetje raar verwoord van mij |:( maar uiteindelijk na het schrijven van de scraper en het vragen van de toestemming toch maar een ander project bedacht ;)
Dat ze het niet willen betekent niet dat het niet mag. Je had misschien geen toestemming, maar is ook geen regel die het je verbied.

Wel netjes dat jullie het gevraagd hebben!
Als ze geen toestemming geven dan is het uiteindelijke effect dat je geblocked gaat worden ;)
Bij het lezen van de titel had ik verwacht dat alle producten in een database terecht zou komen om prijs stijgingen en dalingen in kaart te brengen. Zo kan je super makkelijk achter verboden prijsafspraken komen, maar ook welke winkel globaal goedkoper is als je via de site een virtueel boodschappen mandje vult.

Ik voorzie een grote toekomst voor deze tweakers als 'ie dit doorvoert en dan wat reclame hier of daar laat plaatsen. (niet te veel graag)
Alle prijzen staan op GitHub, dus je kunt de commitgeschiedenis gebruiken om een dergelijke analyse te doen als je wilt. Ik ben benieuwd of er iets te ontdekken valt, al zullen de meeste prijsveranderingen te verklaren zijn omdat supermarkten elkaar heel erg in de gaten houden.

Ik ga trouwens sowieso geen reclame plaatsen, alleen al omdat mensen dan vragen kunnen stellen over hoe onpartijdig de vergelijking nog is. Daarnaast geeft het me een beter gevoel dat iedereen die de site gebruikt een paar euro kan besparen, dan het geld dat ik er mee zou kunnen verdienen.
Binnen no time werkt dit niet meer omdat die supermarkten waarschijnlijk niet blij zijn met scrapers. Ik kan me niet voorstellen dat ze hiervoor geen beveiliging hebben ingebouwd.
Scrapers zijn in de tijd van browsers met instrumentation best lastig te detecteren. Ook kan het best lastig zijn het verschil te zien tussen een stel klanten en 30 smartphones achter een VPN die samen dagelijks (bijna) alle producten in de app bekijken.

Ik denk dat dit nog wel even blijft werken. supermarktscanner.nl werkt ook al tijden. Alleen supermarkten die niet zo goedkoop zijn als ze zelf adverteren hoeven iets te vrezen.
Supermarkten hebben meer en andere belangen dan wat jij als mening hebt. Omzet en gewenste winst bereiken kan bijvoorbeeld ook betekenen dat ze gewoon niet willen dat een ander hun site op een manier gebruikt dan waar die voor gemaakt is. En als een journalist de ontwikkelaar weet te vinden om wat vragen te stellen dan kan een eigenaar van een supermarkt dat ook. Je kan er dus maar beter rekening mee houden dat het misschien niet zo gewenst is als ze er niet zelf om gevraagd hebben. Misschien dus beter als de ontwikkelaar eens contact met die supermarkten op neemt.
Gewenst of niet, in het verleden bleek het databankenrecht niet zo sterk als veel bedrijven graag zeggen dat het is. Tenzij je bedrijfsmodel om het opbouwen van een database draait (denk aan Autotrack, dat in feite een database met advertenties is) zul je waarschijnlijk niet heel sterk staan in de rechtszaal. Helemaal als je service ook nog waarde toevoegt (zoals het scannen van je bonnetje) in plaats van een portal te zijn met diverse links.

Supermarkten versus scrapers is een digitale wapenwedloop als de supermarkten het gevecht aan willen gaan. De AH-website is heel simpel te scrapen dus ik denk dat Ahold hier niet zo'n enorm probleem van maakt, in elk geval.

Je zit natuurlijk ook met een gemiste kans als steeds meer mensen tools als deze gaan gebruiken en jij bent de enige supermarkt die niet in de vergelijker staat; het zal voor iedereen anders zijn, maar als een site niet in Pricewatch staat, is de kans dat ik er zelf iets van tech op koop stukken kleiner in elk geval.

Supermarkten kunnen de rechtszaak gewoon aangaan wetende dat ze juridisch niet geweldig staan zolang de maker van de applicatie maar geen geld heeft voor een advocaat. Of dat een slimme actie is, is een tweede vraag ("Albert Heijn haalt website voor zoeken goedkope boodschappen uit de lucht" is geen geweldige marketing). Tot supermarktscanner.nl uit de lucht gaat, zou ik aannemen dat het op zijn minst gedoogd wordt.
Zolang het een objectieve en actuele weergave van de data is zou ik ook geen problemen verwachten.
Het zou een ander verhaal worden als checkjebon.nl commercieel wordt met bijvoorbeeld reclames of met het spotlighten van producten. Maar ik geloof niet dat dat de insteek is van de maker.
Werken de scrapers niet in de browser dan, dat wordt lastig blokkeren?

Ik krijg ook rare resultaten, producten die niks met elkaar te maken hebben, maar wel interessant idee.
Of juist wel, er komt een recessie aan en dus moeten ze weer meer op prijs ipv sfeer gaan concurreren.
Ik kom echt nooit voor de sfeer naar een supermarkt...
Ik ga ook niet voor de sfeer naar een winkel, maar het heeft wel invloed op naar welke winkel ik ga: smalle gangen met markeringen voor de looprichting op de vloer en mensen die elkaar constant onder de voeten lopen tegenover een winkel met bredere gangen met meer "ademruimte" en de mogelijkheid om eenvoudig iemand te passeren. Geef mij maar dat 2e.
Bij de Dirk is iedereen potentieel crimineel en je voelt die ogen letterlijk op je branden, je krijgt daar nog net geen rectale onderzoek. Bij de AH tellen ze niet eens na als je zegt dat je 30 van hetzelfde hebt (hamstereeeen) en eentje op de band legt. Rara waar ik liever binnenloop.
Ach, voor mij exact het tegenovergestelde ...
Onze lokale AH is er een uit die categorie.

Opvallend hoe vaak er tascontroles zijn bij de zelfcheckouts, mijn ervaring is dat 'de rij' vaak sneller is dan zelf doen.
Zelfs bij één of twee artikelen regelmatig "momentje, er komt een medewerker bij u"
Ja ik gebruik dat nooit dus heb die ervaring niet. Als ik zelf moet werken moet er een vorm van korting tegenover staan :*)
Dus jij vindt:
- je boodschappen uit het schap halen,
- in je kar leggen,
- vervolgens bij de kassa weer uit je kar halen,
- op de band leggen
- om ze vervolgens weer van de band in je tas/krat te leggen...

logischer dan
- je boodschappen uit het schap halen,
- scannen
- in je tas/krat leggen

omdat je anders moet 'werken'.. 8)7
In de eerste situatie heb je dezelfde boodschappen 3x vast, terwijl je met het zelf scannen in de winkel slechts 1x je product vast hoeft te houden.

Of snap je gewoon niet hoe die scanner werkt? Zeg dát dan gewoon ..
Sommige plekken heb je supermarkten zoals jij beschrijft. Maar hier in Rotterdam waar ik ben niet. Je moet alles vanuit je kar bij een kassa zonder medewerker één voor één scannen. Ik kiep zelf overigens meestal mijn mandje op de band ipv één voor één plaatsen. Vervolgens zijn we met zn tweeën sneller klaar dan als ik het zelf had moeten doen op een minder optimale "werkplek".

Je had dit ook zonder beledigend over te komen kunnen schrijven. Ik zit overigens zelf in de supermarkt business en installeer ook verschillende apparatuur dat erbij hoort. Grote kans dat ik er meer over weet en jou uitleg erover kan geven mocht je vragen hebben :)
..
Je had dit ook zonder beledigend over te komen kunnen schrijven.
Je hebt helemaal gelijk.. Excuses.


Overigens zou ik zonder handscanner alsnog liever langs de zelfscan gaan.. dan kun je namelijk gewoon op je eigen tempo je boodschappen inladen.. zonder dat je een turbo-cassiere hebt die al je producten op de uitloopband propt en de klanten achter je in de rij in je nek staan te hijgen. Ben ik niet zo'n fan van..
[...]

Je hebt helemaal gelijk.. Excuses.
aanvaard :)
Overigens zou ik zonder handscanner alsnog liever langs de zelfscan gaan.. dan kun je namelijk gewoon op je eigen tempo je boodschappen inladen.. zonder dat je een turbo-cassiere hebt die al je producten op de uitloopband propt en de klanten achter je in de rij in je nek staan te hijgen. Ben ik niet zo'n fan van..
Dat is echt heel persoonlijk. Ik kom zelf uit een ondernemers familie van kleine familiezaken en onze klantgroep zijn juist mensen die opzoek zijn naar die personal touch, het sociale factor missen in de snelle geautomatiseerde wereld van van nu. Soms een kort babbeletje willen of op zijn minst herkent en gegroet willen worden. Dit zijn niet alleen oude mensen overigens.

Het is dus niet altijd maximale efficiëntie, minste handelingen of snelste manier. Gelukkig hebben we de keuze, voor ieder wat wils.
nananannananana AH'tje voor de sfeer voor de sfeer, AH'tje voor de sfeer.

I'll see myself out.
Maar genoeg mensen wel.
Beetje demotiverende reactie als iemand hier veel tijd in heeft gestoken. Zelfs als dat zou gebeuren kan ik hier veel van leren qua tooling en de inzet ervan.
Supermarkten doen dit met elkaar al jaren onderling :-)
Elkaars sites scrapen dus. Heel soms zie je dat een Jumbo IP-adressen gaat blokken die te vaak scrapen bijv.
Als er genoeg bonnen worden ingescand en je hierbij een eigen db bijhoudt kun je veel prijzen prima actueel houden en nieuwe producten automatisch laten toevoegen.
Erg interessante informatie over hoe dit is opgezet!
En ook een goed initiatief. :)

Volgens mij is het wel zo dat verschillende winkels, verschillende prijzen in het land hanteren. Of is dit niet meer?

[Reactie gewijzigd door MrManuel op 20 december 2022 18:45]

Jumbo doet dat nog steeds volgens deze site.
Klopt, is ook mijn ervaring. Prijzen varieren ook per dag (of vaker) en dat schommelt dus tussen vestigingen,
Inderdaad, dus Checkjebon gebruikt de prijzen van de hoogste categorie. Ik toon liever te hoge prijzen zodat je een mazzeltje hebt bij de kassa, dan andersom.

Misschien dus niet helemaal kloppend in de vergelijking als je in de buurt van een goedkope Jumbo woont, maar andersom is het ook heel oneerlijk naar de consument toe om een hogere prijs voor hetzelfde product te vragen alleen maar omdat er geen andere supermarkten in de buurt zijn.
Misschien nu wat te offtopic, excuus.

Ik vermoed dat prijsverschillen ook afhankelijk kunnen zijn van koop je bij $supermarkt zelf, of bij een franchisenemer die moet betalen om de naam $supermarkt te mogen voeren (en daarbij de loon-/energie-/huur-kosten.
Hoogste prijs lijkt me goed idee. In België betaal je een andere prijs in de supermarkt afhankelijk waar je woont, wordt gekeken naar het aantal concurrenten in de buurt en welke.

Online bestellen heb je ook nog eens andere prijzen (bv colruyt). Zou me niet verbazen moest dat gekoppeld worden/zijn aan wie inlogt... .

Bijkomend om de 'laagste' prijs voor "hetzelfde product" te kunnen bieden gaan ze allen verschillende groottes verkopen... .

Alleszins goed dat iemand alvast de moeite doet om hier wat orde in te brengen.
Toch zou het pas echt interessant zijn om op de laagste (kortings-)prijzen te kunnen vergelijken, omdat je eigenlijk vooral daar op kunt besparen met je boodschappen. Zoiets bestaat er wel specifiek voor luiers.

Een paar jaar geleden ben ik eens aan een vergelijkbaar project begonnen, maar toen bleek dat online kortingsprijzen vaak alleen geldig waren bij online bestellen. Ik had er toen niet eens aan gedacht dat hoogste prijs vergelijking ook waardevol zou kunnen zijn.

Interessant om te zien hoe je met die scrape flows omgaat met het probleem van changes op al die verschillende Supermarkt interfaces.
Werkt aardig alleen als ik bijv. Coca Cola zoek, kan ik niet het aantal liter(s) kiezen. Dat zou handig zijn 👍🏻
Bijtypen, en hij neemt het mee in de zoektocht. Zo probeerde ik het net uit.
Als supers dit blokkeren, kan hij niet gewoon als enige bron voor de prijzen juist de ingescande bonnetjes gebruiken? Wellicht mensen zelfs hun loyalty card laten koppelen om hun actuele bon uit je AH Bonus in te lezen?
Hoe moet een supermarkt het blokkeren? :) Daarnaast hebben ze er zelf ook baad bij natuurlijk. En zo niet, dan moeten ze zich achter de oren krabben lijkt me. :) Lijkt mij dus alleen maar goed voor de concurrentie dit. Andere prijsvergelijkers zijn er ook, die krijgen tegenwoordig ook een commissie als je via hen bijvoorbeeld een autoverzekering afsluit. Juist van die commissies leven die sites.
Je zit met rate limiting. Een normale bezoeker gaat echt niet 9000 producten bekijken per dag.
Hoe moet een supermarkt het blokkeren? :) Daarnaast hebben ze er zelf ook baad bij natuurlijk. En zo niet, dan moeten ze zich achter de oren krabben lijkt me. :) Lijkt mij dus alleen maar goed voor de concurrentie dit. Andere prijsvergelijkers zijn er ook, die krijgen tegenwoordig ook een commissie als je via hen bijvoorbeeld een autoverzekering afsluit. Juist van die commissies leven die sites.
Ik zoiets (veel eenvoudigers) gemaakt in Python, en op websites als van Colruyt wordt ik geblokt omdat de website terecht veronderstelt dat het om een bot gaat.

[Reactie gewijzigd door grrfield op 20 december 2022 19:32]

Ik wou net te zeggen: Zou iemand dit al gemaakt hebben voor België?
VEEL eenvoudiger :)

@Homme Ik bedoel dat mijn poging maar low effort was. 50 lijntjes code en klaar.

[Reactie gewijzigd door grrfield op 20 december 2022 19:53]

Feel free to share (PM) ^^
Goed initiatief! en ga het zeker in de gaten houden helaas kan de website nog niet overweg met alle producten.

Als je op roomboter zoekt krijg je roomboter croissant ondanks dat ik nooit croissant heb toegevoegd.

En Unox knakworstjes bestaan helaas nog niet.

P.s. een optie die bijvoorbeeld vraagt "bedoelde u misschien?" Zou misschien een optie zijn?

[Reactie gewijzigd door copywizard op 20 december 2022 18:44]

Ja ga ook wel eens proberen voor de grap, maar gewoon al niet naar de ah of jumbo gaan scheelt al enorm in de portemonnee.
Ze hebben een leuke actie heel soms, maar over algemeen is alles gewoon duurder bij hun dan de Hoogvliet of Dirk van den broek bijv(moet je uiteraard wel in de buurt hebben).

Zal morgen voor de grap mijn bon eens bewaren van de Dirk, en eens kijken wat eruit komt.
Als je n beetje slim gebruik maakt van de aanbiedingen kan AH echt goedkoper zijn. Hun huismerk is ook goed geprijsd, zeker de voordeel-verpakkingen.

Dirk heeft hier de aanbiedingen nooit op voorraad en vervolgens kun je geen bonnetje halen om het later voor die prijs te krijgen, iets wat bij AH geen enkel probleem is.

On-topic, prijzen zijn verschillend per regio, benieuwd hoe dit opgelost is.
Huismerk is zelfs van de Dirk goedkoper dan de ah, dus nee de ah is echt over algemeen altijd duurder.
Over bonnetje schrijven en later terug komen heb nog nooit gehoord, en ook nog nooit iemand horen doen eigenlijk.
Buiten acties die goedkoper kunnen zijn, maar dan is nog niet voordeliger al je boodschappen er te halen.

De Dirk heeft bij mij in Utrecht altijd alles op voorraad, of nu de acties zijn of gewone producten die niet in de aanbieding zijn.

Goed het ligt er natuurlijk ook aan hoe ver weg de winkel zit enzo, ik zal niet voor bijv de Dirk dan half uur gaan rijden(dan haal je er geen voordeel meer uit en kun je net zo goed ergens anders heen gaan).
Bij de AH moet je het vooral van je persoonlijke bonus box hebben. Daaruit kun je wekelijks 5 (of 10 als premium lid) dingen kiezen die je dan met korting koopt. (20-50% korting is geen uitzondering).

De truc is om alleen specifieke producten waar je graag korting op wilt met die bonuskaart af te rekenen. De kans is dan aanzienlijk dat je deze producten zeer regelmatig terugziet in je bonus box.

Als je er echt zin in hebt kun je je voordeel verder vergroten door meerdere bonuskaarten te gebruiken. (Gaat mij iets te ver, maar in deze tijden zal het voor sommigen net het verschil kunnen maken).
Ah Dirk, met z'n grootspraak dat ze de goedkoopste zijn.. maar ze gemakshalve vergeten erbij te vermelden dat de goedkopere alternatieven nooit op voorraad zijn
mwa, Dirk is tegenwoordig wel echt goedkoper dan bijv een Lidl, Jumbo of AH.
Zelfde artikelen die normaal bij de Lidl haalde en nu eens bij de Dirk(goedkoopste variant die ze hebben liggen) en kwam goed een 30 euro goedkoper uit op mijn weekboodschappen.

Dat vind ik nogal de moeite waard als je voor 5 man boodschappen doet.
Lidl weet ik niet denk ik toch niet perse, maar komt omdat ze veel Duitse merken hebben(dus lastig te vergelijken).
Ze hebben soms wel eens Nederlandse merken in de actie, maar algemeen zijn alleen andere Duitse merken.

Ik vind zelf de Lidl niet perse duurder dan de Dirk, maar deze 2 winkels horen wel bij mijn favorieten goedkope winkels.
De Dirk ook nooit problemen mee zoals 2 hier wel, alle producten zijn er altijd nooit een leeg schap.
Ik heb de Lidl, Dirk, ah XL op 5 min afstand, ik kom eigenlijk alleen bij de Dirk en Lidl elke week(ook al bekijk ik de acties van de Ah en jumbo ook).

[Reactie gewijzigd door Carlos0_0 op 20 december 2022 20:56]

Alle artikelen zijn gewoon elke week op voorraad, grijp daar nooit mis.
1 2 3 ... 6

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee