Boekbespreking: Webscraping met Python van Ryan Mitchell

Vorig jaar oktober spraken we met Jerry Vermanen over het boek Internet research & Datajournalistiek waarvan hij mede-auteur is. Het boek bevat een hoofdstuk over de mogelijkheden en het belang van webscraping geschreven door Vermanen en daarom leek het ons een aardig idee om het nieuwe Handboek Webscraping met Python van Ryan Mitchell door hem te laten bespreken. Voor je begint met lezen een definitie van webscraping: ‘webscraping is een computertechniek waarbij software wordt gebruikt om informatie van webpagina’s te extraheren en al dan niet te analyseren.’ (H.F.)

Webscraping is niet voor iedereen weggelegd. Zo, dat is eruit. Een goede waarschuwing voor ieder persoon die het boek Webscraping met Python van Ryan Mitchell wil aanschaffen, maar geen basiskennis van Python heeft. Maar stel dat je wel weet wat BeautifulSoup is en je de terminal op je Mac of Linux-machine weet te vinden: maak alvast wat lege mappen aan om je nieuw gescrapte data in te bewaren.

Voor de leek die na de eerste alinea toch doorleest: webscraping is het gestructureerd verzamelen van online gegevens. Met een scraper kun je bijvoorbeeld een serie van websites aanroepen waarvan je telkens op exact dezelfde plek informatie plukt om in een csv-bestand op te slaan.

Er bestaat geen gratis tool voor webscraping

Vanuit mijn eigen perspectief – datajournalist, redelijk goed ingevoerd in R – hoor ik de laatste jaren erg veel collega-journalisten over scraping praten. ‘Hoe kan ik dat ook leren?’, vragen ze nadat ze de zoveelste productie zien met bij elkaar geraapte online gegevens. Een duidelijke richting aanwijzen is nog best lastig. Wil je een gratis tool waarin je alles kunt scrapen? Helaas, die bestaat niet. Je moet toch echt zelf aan de slag om scrapers te schrijven wil je er daadwerkelijk iets nuttigs uit halen. En de drempel om een programmeertaal zoals Python te leren is nog steeds vrij hoog.

Mijn eigen aanpak om nieuwe vaardigheden te leren is projectgedreven. Ik bedenk wat mijn einddoel is, zoek een aantal hulplijnen en ga – oneerbiedig gezegd – aanklooien totdat ik iets heb dat op mijn einddoel lijkt. Webscraping is in veel gevallen vergelijkbaar. Eigenlijk ben je met elke scraper een puzzel aan het oplossen (met een hand op je rug, terwijl je slaperig bent).

Breed scala aan mogelijkheden

Het boek van Ryan Mitchell zorgt ervoor dat je met twee handen en klaarwakker aan de slag kunt gaan met je volgende scraper. Vanaf de eerste pagina zit het tempo er al lekker in. Mitchell neemt nauwelijks tijd om je tenen in het water te steken voor de temperatuur. Hop, gelijk je terminal open en gaan. Wat ik knap vind, is dat Mitchell een enorm breed scala aan mogelijkheden beschrijft in zijn boek. Het gaat niet enkel om de eenvoudigste websites, maar ook hoe je documenten op websites verzamelt en inleest. Over het opschonen van gegevens. Hoe je een dynamisch webformulier kunt scrapen. Hoe je CAPTCHA’s kunt omzeilen.

Ik zal eerlijk zijn en zeggen dat ik niet alle voorbeelden volledig heb gesnapt. Daarvoor ben ik nog te onervaren in Python. Maar dat ik nu weet dat de mogelijkheid er is (het einddoel dat ik voor mijn eigen projecten zoek), motiveert mij wel om deze vaardigheden aan te leren.

Een mijnenveld…

Het boek sluit af met een enorm ingewikkelde kwestie: is het toegestaan om informatie van andere websites te verzamelen en – mogelijk – te gebruiken voor jouw eigen projecten. Dit hoofdstuk geeft je een goede indruk in welk mijnenveld je eventueel terecht kunt komen. Zoals duidelijk vermeld staat: dat hoofdstuk levert geen juridisch advies, maar het schetst wel een kader waarin je je kunt bewegen. De genoemde voorbeelden zijn wel erg USA-gecentreerd, maar je kunt dat hopelijk deels naar ons eigen land vertalen.

Wil je een vriendelijke inleiding in Python en scrapers? Sla dit boek over. Heb je enige ervaring en zoek je naar structuur en een heldere richting in je nieuwe webscraping-project? Dan raad ik dit handboek zeker aan.
Jerry Vermanen

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.