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
Toont een leverancier zijn assortiment op een openbare site maar stuurt hij geen bestand, dan kopieert deze parser de catalogus naar een tabel die je webshop kan importeren: naam, code, prijs, beschrijving, specificaties, categorie en links naar foto's, en hij slaat de foto's op in een map. Stuur de site van de leverancier, links naar een categorie en een productpagina, een of twee pagina's opgeslagen vanuit je browser en het importsjabloon van je webshop, bijvoorbeeld een CSV voor Shopify of WooCommerce, zodat de kolommen dat volgen. Je krijgt Python-code met een instellingenbestand en een README en draait hem op je computer. Gebruik alleen foto's en teksten die de leverancier je laat gebruiken. Hij leest openbare pagina's in een rustig tempo en logt nooit in, omzeilt geen captcha's of beveiliging en verzamelt geen persoonsgegevens. Jij bepaalt of de voorwaarden van de site 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.
- Kolommen voor je importIn de volgorde en met de namen van het importbestand van je webshop
- Foto's klaar om te ladenLinks naar foto's in een kolom en bestanden genoemd naar de productcode
- Prijzen zoals getoondDe prijs van de leverancier; je eigen opslag voeg je toe in de tabel
- Rustig tempoEen pauze tussen pagina's, in te stellen in de instellingen
- Een heldere handleidingWat je installeert en hoe je het uitvoert, stap voor stap
Hoe het werkt
- 1CatalogusJe geeft de pagina's van de leverancier en je importsjabloon
- 2ParserWij schrijven de code en de handleiding om hem uit te voeren
- 3TestimportJe start hem en importeert de eerste rijen in je webshop
- 4WijzigingenJe vraagt binnen je pakket om wijzigingen en stuurt een eventuele foutmelding mee
Wat we van je nodig hebben
De site van de leverancier: een link naar een categorie en naar een productpagina, en ongeveer hoeveel producten het zijn. Het importsjabloon van je webshop of een voorbeeldexport van een paar van je producten, zodat de kolommen overeenkomen. De velden die je nodig hebt, zoals naam, code, prijs, beschrijving, specificaties, categorie, foto's. Een of twee pagina's van de leverancier, opgeslagen vanuit je browser (Bestand > Pagina opslaan als). Hoe fotobestanden moeten heten. En je bevestiging dat de leverancier je zijn foto's en teksten laat gebruiken.
We vragen je:
- Welke site van de leverancier en welke pagina's?
- Je webshop en het importbestand
- Ongeveer hoeveel producten?
- Foto's
Pakketten vergelijken
| Pakketten | BasisProductpagina's naar een tabel€ 20 | StandaardEen heel catalogusonderdeel€ 39 | PremiumMeerdere leveranciers of onderdelen€ 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 |
| Foto's | links in een kolom, bestanden in een map | links in een kolom, bestanden in een map | links in een kolom, bestanden in een map |
| 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
Kan ik het bestand meteen in mijn webshop importeren?
De kolommen volgen het sjabloon dat je stuurt, dus in de meeste gevallen wel. We controleren het bestand tegen je sjabloon, niet in je webshop zelf, dus probeer eerst een kleine import van de eerste rijen voordat je alles laadt.
Mag ik de foto's en beschrijvingen van de leverancier gebruiken?
Alleen als de leverancier dat toestaat: ze zijn van hun eigenaar, en de toestemming regelen ligt bij jou. De parser slaat alleen afbeeldingen op die je mag gebruiken.
Kan hij dealerprijzen achter de login van de leverancier lezen?
Nee. Hij logt nooit in, dus dealer- of groothandelsprijzen achter een account blijven buiten bereik. Vraag de leverancier om een prijsbestand; de parser verzamelt de rest van de openbare catalogus toch.
Kan hij een catalogus kopiëren van Amazon, Google of een winkel op een sociaal netwerk?
Nee. Hun voorwaarden verbieden het; dat geldt ook voor LinkedIn en andere sociale netwerken. Gebruik de officiële export van de dienst of vraag de verkoper om een bestand.
Wat als de leverancier zijn site verandert?
De parser volgt de pagina's zoals ze nu zijn. Een latere wijziging van de opmaak vraagt om een update, en dat is een nieuwe bestelling.
Staat je antwoord er niet bij?