We startten een onderzoek naar de kledingindustrie. Voor het introductieartikel hebben we alle heren- en dameskleding verzameld van vier grote winkelketens: HEMA, H&M, Primark en C&A. Hoe deden we dat? En waarom kozen we specifiek die vier winkelketens?

Selectie

We begonnen met een selectie van winkelketens. Als eerste wilden we weten welke kledingwinkels in Nederland volgens de meest recente cijfers de grootste omzet maakten.

Daarvoor kregen we van de e-commerce vaktitel Twinkle data toegestuurd. De data is afkomstig uit de Twinkle Top 100 van 2018. Deze Top 100 rangschikt de online topverkopers in Nederland naar omzet. We selecteerden hieruit kledingretailers die eigen merken aanbieden, voor zowel mannen als vrouwen én waar we geautomatiseerd de prijzen van de website af konden halen.

Dat is gelijk de reden dat we kledingdistributeurs zoals Zalando en de Bijenkorf niet hebben meegenomen in dit onderzoek. Zalando verkoopt bijvoorbeeld kleding van het merk Adidas en omdat dit geen eigen merk van Zalando is, heeft Zalando dus geen invloed op de prijs van het product. Daarom blijven alleen H&M, C&A, Primark en HEMA over. Uit een inventarisatie van die webwinkels komen we dan uit op 24.340 kledingstukken.

Scrapen

Hoe verzamel je de prijzen van al die kledingstukken? Alleen al de sectie ‘dames’ bij H&M heeft meer dan 9.000 kledingstukken. Als je dat met de hand over gaat tikken in Excel, ben je wel even bezig. Laat staan dat je dan ook nog eens de mannensectie mee moet nemen. En dan ook nog eens van vier webwinkels. Gelukkig kan dat makkelijker, met een techniek die scraping heet. Je schrijft dan een stukje code dat de elementen uit een pagina (zoals een prijs, of een kleur) omzet in gestructureerde data, zoals in een spreadsheet.

Een voorbeeld. Hier is een product uit de webshop van H&M: een vest van €9,99.

kleding2.jpg

Dit is wat consumenten op het eerste oog zien in de webshop. Maar de pagina in je webbrowser is geschreven in een taal: HTML. De code die deze afbeelding en bijbehorende informatie beschrijft ziet er zo uit:

kleding3.png

Als je goed kijkt, kun je in de HTML details zien die je ook in de browser ziet, zoals de titel (“Fijngebreid vest”) en de prijs (“€ 9,99”). Je ziet ook stukjes tekst zoals <h3> en <strong>. Dit zijn HTML-tags. Ze vertellen de browser dat er een bepaald soort element is, zoals een hyperlink, een plaatje of een lijst. Die elementen bevatten ook vaak het woord ‘class’, zoals op de allereerste regel: <li class=”product-item”>. <li> staat voor list item, en die class (‘product-item’) is de naam die de programmeur heeft bedacht om aan te geven dat het een artikel is.

Die elementen met classes zijn cruciaal voor het scrapen van een site als H&M. Want daardoor kun je in de bijna 7.000 elementen die deze specifieke pagina heeft precies die ene vinden waar de prijs in staat.

Overigens kun je de HTML van elke pagina gewoon bekijken in je webbrowser (mits je op een desktop of laptop zit).

Probeer het maar eens: klik met je rechtermuisknop op deze zin en selecteer vervolgens ‘Inspecteer’ (Chrome) of ‘Inspecteer element’ (Firefox, Safari).

Voor het scrapen gebruik ik de programmeertaal Python. Om in die taal uit de bovenstaande HTML-soep de prijs van het vest te halen, heb je code nodig die er ongeveer zo uit ziet:

kleding4.png

Als je dit stukje code draait, zal het de prijs van het eerste artikel op de pagina met damesartikelen laten zien.

Automatiseren

Deze methode hebben we uitgebreid toegepast op alle kledingsites. Behalve de prijs kun je op deze manier ook de URL naar de volgende pagina uit de HTML halen. Als je daar dan weer code omheen schrijft, kun je door alle pagina’s van de site heen bladeren en de data opvragen. Alsof je een soort robot hebt die voor jou H&M doorbladert en alle prijzen opschrijft. Voor het scrapen van de complete collectie van de H&M heeft zo’n robot minder dan een uur nodig.

Zo’n scraper moet je wel voor elke website opnieuw schrijven. Want iedere website is verschillend. Code die je schrijft om de ene website te scrapen, zal meestal niet werken op een andere. Bij de H&M zaten de prijzen bijvoorbeeld in een element met de class ‘price’, maar bij de Primark was dat ‘product-item__price’.

En niet alle sites laten zich makkelijk scrapen. De sites van Mango en Zara waren dusdanig complex dat het te veel tijd zou hebben gekost om ze te scrapen. We hebben (mede) daarom de selectie beperkt tot de HEMA, C&A, Primark en H&M.

Wil je zelf aan de slag met het scrapen van websites? Voor veel programmeertalen zijn libraries beschikbaar om sites te scrapen. Voor het scrapen van de kledingsites heb ik een simpel tooltje gebouwd wat het makkelijker maakt om dingen te automatiseren met de naam webgraze. Suggesties zijn uiteraard van harte welkom. En als je benieuwd bent naar alle producten is ook de complete dataset beschikbaar.

Makers

Designer
Dataprogrammeur