BetaalbeschermingDetails
- Revisies binnen het pakket zijn gratis.
- Reageer je niet binnen 3 dagen na levering, dan wordt het werk automatisch goedgekeurd.
Het geld wordt bij betaling gereserveerd en pas vrijgegeven als je het werk goedkeurt.

Voorbeeldresultaat
Parser of a garden tools supplier's catalog into Excel
What the result looks like
| Article | Name | Price | In stock | Weight | Photo |
|---|---|---|---|---|---|
| GT-1042 | Pruning shears, 20 mm | 18.90 | Yes | 0.24 kg | …/gt-1042.jpg |
| GT-1187 | Folding saw, 210 mm | 24.50 | Yes | 0.31 kg | …/gt-1187.jpg |
| GT-2210 | Hedge shears, wavy blade | 39.00 | No | 1.10 kg | …/gt-2210.jpg |
| GT-3305 | Hand trowel, stainless | 9.80 | Yes | 0.18 kg | …/gt-3305.jpg |
| GT-4120 | Garden hose 25 m, 1/2" | 42.00 | Yes | 2.90 kg | …/gt-4120.jpg |
The file in the example has 1,236 products from 52 list pages.
A part of the code
def product_links(list_url: str) -> Iterator[str]:
"""Product page links from every page of the list, following 'Next'."""
url: str | None = list_url
while url:
page = fetch(url)
for card in page.select("div.product-card a.title"):
yield urljoin(url, card["href"])
next_link = page.select_one("a.pagination-next")
url = urljoin(url, next_link["href"]) if next_link else None
def fetch(url: str) -> BeautifulSoup:
"""One open page, at a polite pace: a pause between requests and a few tries on errors."""
for attempt in range(3):
time.sleep(settings.delay_seconds)
response = session.get(url, timeout=30)
if response.status_code == 200:
return BeautifulSoup(response.text, "html.parser")
log.warning("%s answered %s, try %d of 3", url, response.status_code, attempt + 1)
raise ScraperError(f"{url} did not open after 3 tries")
Files: a ZIP archive with scraper.py, settings.ini (the start page, the pause between requests, the file name), requirements.txt and a README on installing and running it. It reads only open pages, one every 2 seconds, and checks the site's robots.txt first. The client runs it on their own computer.
Client: an online garden shop that resells a supplier's tools; the supplier has an open catalog on its website but no price list file. Task: go through the catalog's list pages, open every product page and save the article number, name, price, stock, weight and main photo link to Excel, to compare prices once a week.
De klant en alle details zijn verzonnen.
Over deze dienst
Deze parser zet de prijzen van dezelfde producten uit maximaal drie openbare webshops naast elkaar: één rij per product, met per winkel de prijs, oude prijs, voorraad en link, en de datum van de controle. De drie winkels horen bij Premium; Basis en Standaard lezen één winkel, als start of test. Producten worden gekoppeld op een code die de winkels tonen, zoals een barcode of artikelnummer van de fabrikant, of op de links die je per product opgeeft: namen alleen verschillen te veel om veilig te koppelen. Stuur de sites, van elke site een productpagina opgeslagen vanuit je browser en je productlijst. Je krijgt Python-code, een instellingenbestand en een README en draait hem op je computer. Hij leest openbare pagina's in een rustig tempo, logt nooit in, omzeilt geen captcha's of beveiliging en leest geen Amazon of Google. Jij bepaalt of de voorwaarden van de winkels het toestaan; een latere wijziging van de opmaak vraagt om een update.
Wat is inbegrepen
- Wat je krijgtEen ZIP-archief met de Python-code, een instellingenbestand en een README met stapsgewijze instructies; de code staat ook op de bestelpagina.
- Eén rij per productPrijs, voorraad en link van elke winkel naast elkaar
- Gekoppeld op code of jouw linksBarcode, artikelnummer van de fabrikant, of links die je opgeeft
- Datum van de controleIn elke rij, zodat je runs kunt vergelijken
- Rustig tempoEen pauze tussen pagina's, in te stellen in de instellingen
- Draait op je eigen computerWindows, macOS of Linux, met Python
Hoe het werkt
- 1WinkelsJe geeft de winkels, opgeslagen productpagina's en je productlijst
- 2ParserWij schrijven de code en de handleiding om hem uit te voeren
- 3StartenJe start hem en controleert een paar rijen in elke winkel
- 4WijzigingenJe vraagt binnen je pakket om wijzigingen en stuurt een eventuele foutmelding mee
Wat we van je nodig hebben
De drie winkels (of één, voor Basis en Standaard) en van elke winkel een productpagina, opgeslagen vanuit je browser (Bestand > Pagina opslaan als). Je productlijst met de code die de winkels tonen, zoals een barcode, of een tabel met de link van elk product in elke winkel. De velden die je per winkel nodig hebt, bijv. prijs, oude prijs, op voorraad, link. Ongeveer hoeveel producten. CSV, Excel of JSON.
We vragen je:
- Welke winkels?
- Hoe koppel je producten?
- De velden per winkel
- Ongeveer hoeveel producten?
Pakketten vergelijken
| Pakketten | BasisEén winkel om te beginnen€ 19 | StandaardEén winkel, hele categorie€ 38 | Premium3 winkels in één tabel€ 68 |
|---|---|---|---|
| Levertijd | 1 dag | 2 dagen | 3 dagen |
| Revisies | 1 | 2 | 3 |
| Sites | 1 | 1 | tot 3 |
| Soorten pagina's | 1 | 2 (categorie en product) | tot 3 |
| Velden | tot 10 | tot 25 | tot 25 per stuk |
| Loopt de pagina's van een overzicht door | Nee | Ja | Ja |
| Resultaatbestand | CSV | Excel of CSV | Excel, CSV of JSON |
| Dubbele rijen verwijderd, gaat verder waar hij stopte | Nee | Nee | Ja |
| Bestellen Basis | Bestellen Standaard | Bestellen Premium |
Betaalbescherming
Je betaalt bij het bestellen, maar het geld wordt alleen vrijgegeven voor goedgekeurd werk.
- Vaste prijsDe prijs van het pakket verandert niet meer nadat je hebt betaald.
- Het geld wordt gereserveerdBij betaling wordt het bedrag alleen gereserveerd. Het gaat pas naar de dienst als je het werk goedkeurt.
- Gecontroleerd vóór leveringElk resultaat doorloopt een kwaliteitscontrole voordat het bij jou komt, en je ziet het op de bestelpagina voordat je het goedkeurt.
- Gratis revisiesVraag wijzigingen binnen je briefing aan, zo vaak als het pakket toestaat.
- Goedkeuring na 3 dagenKeur je het werk binnen 3 dagen na levering niet goed en vraag je ook geen wijzigingen, dan wordt het automatisch goedgekeurd. Schrijf je na levering in de chat van de bestelling, dan wacht de bestelling; zodra we hebben geantwoord, kunnen we de 3 dagen opnieuw laten ingaan en melden we dat in de chat.
- Opnieuw doen of volledige terugbetalingPast het resultaat niet bij je briefing en hebben de revisies dat niet opgelost, of duurt het werk meer dan twee keer zo lang als de levertijd, schrijf dan in de chat van de bestelling: we doen het werk opnieuw of betalen het volledige bedrag terug.
Vragen en antwoorden
Waarom vergelijkt alleen Premium 3 winkels?
Elke winkel heeft eigen pagina's, dus elke winkel heeft een eigen deel van de code nodig. Basis en Standaard dekken één winkel, een goede manier om het eerst te proberen.
Wat als een winkel geen barcode toont?
Geef ons dan een tabel met de link van elk product in elke winkel. We koppelen producten niet door te gokken op hun namen.
Kan hij Amazon, Google Shopping of winkels op sociale netwerken meenemen?
Nee. Amazon, Google, LinkedIn en sociale netwerken vallen erbuiten: hun voorwaarden verbieden het. Voor andere winkels bepaal jij of hun voorwaarden het toestaan.
Kan hij ook verzendkosten vergelijken?
Alleen als de productpagina die aan elke bezoeker toont. Hij legt nooit iets in een winkelmandje, vult geen adres in en logt nooit in.
Staat je antwoord er niet bij?