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
Elke keer dat je hem start, controleert deze parser welke producten op voorraad zijn op een openbare site, zoals die van je leverancier of een winkel waarvan je de artikelen doorverkoopt, en slaat hij een tabel op: naam, code, status zoals de pagina die schrijft, resterende hoeveelheid als die getoond wordt, levertijd, prijs, link, en de datum en tijd van de controle. Bewaar het bestand van elke run, dan zie je wat er terugkwam en wat er uitverkocht raakte. Stuur de site, links naar een categorie en een productpagina, de statussen die de site gebruikt en een of twee pagina's opgeslagen vanuit je browser. Je krijgt Python-code, een instellingenbestand en een README en draait hem op je computer. Hij leest alleen 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.
- Status als kolomDe woorden van de site, of je eigen labels zoals ja / nee / in bestelling
- Hoeveelheid als die getoond wordtAls de pagina laat zien hoeveel er nog zijn
- Gedateerde rijenDatum en tijd van de controle in elke rij
- 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
- 1Pagina'sJe geeft de site, de producten en de statussen die de site gebruikt
- 2ParserWij schrijven de code en de handleiding om hem uit te voeren
- 3Eerste controleJe start hem en vergelijkt een paar statussen met de site
- 4WijzigingenJe vraagt binnen je pakket om wijzigingen en stuurt een eventuele foutmelding mee
Wat we van je nodig hebben
De site en de precieze pagina's: een link naar een categorie en naar een productpagina, of je lijst met productlinks, en ongeveer hoeveel producten. De voorraadstatussen die de site toont, geschreven zoals ze verschijnen. De velden die je naast de status nodig hebt, bijv. code, prijs, levertijd. Een of twee pagina's opgeslagen vanuit je browser (Bestand > Pagina opslaan als) of screenshots, het liefst één op voorraad en één niet op voorraad. Hoe vaak je hem wilt starten.
We vragen je:
- Welke site en welke producten?
- De voorraadstatussen
- Andere velden
- Hoe vaak ga je controleren?
Pakketten vergelijken
| Pakketten | BasisVoorraad van je productlijst€ 19 | StandaardVoorraad van een hele categorie€ 37 | PremiumMeerdere sites of onderdelen€ 66 |
|---|---|---|---|
| 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 |
| Datum en tijd van de controle | Ja | Ja | 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
Waarschuwt hij me als een product terug is?
Nee. Hij slaat een tabel op met de datum en tijd van elke controle; je filtert die of legt twee bestanden naast elkaar in Excel. Berichten en meldingen horen er niet bij.
Kan hij de voorraad in een bepaalde winkel of een bepaald magazijn tonen?
Alleen als een openbare pagina dat zonder inloggen toont, bijvoorbeeld een lijst met winkels op de productpagina. Een winkelkeuze waarvoor een account nodig is, blijft buiten bereik.
Hoe vaak kan ik hem starten?
Zo vaak als redelijk is voor de site: een pauze tussen pagina's betekent dat een grote categorie even duurt, dus een paar keer per dag is meestal het maximum. Premium voegt een handleiding toe om hem volgens een schema te laten draaien.
Kan hij de voorraad controleren op Amazon, Google Shopping of sociale netwerken?
Nee. Hun voorwaarden verbieden het, net als de voorwaarden van LinkedIn en andere sociale netwerken. Voor andere sites bepaal jij of hun voorwaarden het toestaan.
Wat als de site zijn pagina's verandert?
De parser volgt de pagina's zoals ze nu zijn. Een latere wijziging van de opmaak of van de statuswoorden vraagt om een update, en dat is een nieuwe bestelling.
Staat je antwoord er niet bij?