Posts in Techniek

De 5 meest voorkomende valkuilen als je zelf een web scraper bouwt

26 juli 2019 Posted by Techniek 0 thoughts on “De 5 meest voorkomende valkuilen als je zelf een web scraper bouwt”

In dit artikel:
De meest gemaakte fouten als je zelf aan de slag gaat met web scraping

Het internet is een hele interessante en belangrijke bron van informatie voor je bedrijf. De data die je online vindt, kun je gebruiken voor allerlei verschillende toepassingen. De ‘intelligence’ die je vanaf het web vergaart kun je bijvoorbeeld inzetten voor het vergelijken van aanbod en prijzen, voor lead generatie of voor onderzoek.

De uitdaging ligt, naast het verzamelen van de data, met name in het gestructureerd opslaan van de data en vervolgens het trekken van de juiste conclusies uit de data. De eerste stap, het verzamelen van de data, is een tijdrovende en eigenlijk onmogelijke klus als je dit handmatig zou doen. Om de data geautomatiseerd te verzamelen, kun je een web scraper bouwen.

Met web scraping kun je data verzamelen en op een gestructureerde wijze en goed georganiseerd opslaan in een database. Via deze weg heb je de eerste twee stappen dus al te pakken. Om de data te verzamelen schrijf je een script voor web scraping. Als je kennis hebt van programmeren in bijvoorbeeld Python, lijkt dat ogenschijnlijk eenvoudig. Tot je aan de slag gaat en ontdekt dat je een aantal essentiële zaken bent vergeten. Wij schreven een aantal van de meest voorkomende valkuilen voor je op.

Valkuil 1: Beveiliging tegen scrapers

Als je jouw scraper het wereldwijde web opstuurt, krijg je onherroepelijk te maken met tegenmaatregelen die het je lastig proberen te maken.

Men is nu eenmaal niet altijd blij met een scraper op zijn of haar server, omdat dit bij onjuiste toepassing allerhande problemen kan veroorzaken voor de eigenaar van de server en website, zoals een overbelaste server of foutieve Analytics data. Daarnaast zullen bepaalde partijen ook scrapers weren, omdat ze willen voorkomen dat ‘hun’ data door anderen wordt gebruikt.

Om web scraping tegen te gaan, worden er zodoende maatregelen genomen. Als je scraper te snel gaat (zie valkuil 3), zal slimme software ontdekken dat het bezoek niet van een mens afkomstig is.

Ook wanneer je steeds dezelfde commando’s uitvoert op een website, bijvoorbeeld door via je scraper continu zoekopdrachten in te voeren in de zoekmachine van Google, zal ontdekt worden dat de bezoeker geen mens betreft. Om te controleren dat het tóch om een mens gaat, wordt je bijvoorbeeld gevraagd om een captcha op te lossen of wordt nagegaan of er bewegingen met een muis worden gemaakt.

Daarnaast worden op websites ook links geplaatst die voor menselijke gebruikers van de website niet zichtbaar zijn. Als je scraper toegang vraagt tot deze links, is het een simpele rekensom om te bepalen dat het niet om een mens gaat.

Als je scraper hierop niet is voorbereid, is – in bovenstaande drie voorbeelden – de kans groot dat je scraper al vrij snel niet meer doet waarvoor je hem hebt gebouwd.

Valkuil 2: Niet roteren van IP adressen en User Agents

Als je een scraper bouwt die continu en vaak vanuit dezelfde locatie en besturingssysteem een website op gaat, duurt het niet lang voor men door heeft dat je aan het scrapen bent.

Als continu dezelfde IP adressen en user agents een webserver benaderen, is het wachten op een blokkade. Ze zijn wel goed, maar niet gek.

Om te zorgen dat je onder de radar blijft, is het verstandig om willekeurig per website request een andere combinatie van IP adres en user agent te selecteren. Op die manier lijken je acties steeds vanaf andere gebruikers te komen.

Valkuil 3: Te snel scrapen

Bij het crawlen (of scrapen) van websites met een bot, boots je in feite menselijke handelingen na. Je gaat naar een website, ‘bekijkt’ één of meerdere pagina’s, je haalt de informatie die je nodig hebt van de website, slaat deze op en je gaat verder. Aan menselijke capaciteiten zitten menselijke limieten. Zo snel als een crawler pagina’s verwerkt, is als mens niet bij te benen.

Sneller werken, betekent meer belasting voor de server waarop je aan het scrapen bent. De server, waarop de website draait, krijgt meer requests van de gebruiker, in dit geval scraper, dan hij normaal krijgt. Dit valt absoluut op en kan eventueel voor overbelasting zorgen.

Als er te veel requests tegelijk komen, dan kan de server dit zien als een cyberaanval. Dit betekent dat de website op zwart gaat. Hiervan vinden een hoop partijen grote nadelen: de hostingpartij, de website eigenaar, andere bezoekers van de website en jij. Zo ver je scraping avontuur op die website, tot deze is hersteld.

Niet echt aardig, dus zorg dat je de snelheid van je scraper aanpast naar gangbare belasting voor een server.

Valkuil 4: Kwaliteit en onderhoud overschatten

Je hebt je scraper gebouwd en je stuurt hem het web op. Klaar is Kees. Of toch niet, want er komt meer bij kijken.

Je stopt veel tijd en energie in het bouwen van je scraper. Dan is het wel fijn als hij ook op de lange termijn blijft werken. Websites wijzigen en elke website is anders. Het is dus prettig als de scraper overal juist werkt en automatisch mee gaat in wijzigingen die worden aangebracht op het web. Wat je hiervoor nodig hebt? Een knap staaltje programmeerwerk. Bij rechttoe rechtaan programmeren gaat het onderhoud van je scraper je op termijn heel veel tijd en energie kosten.

Ook het live hebben én houden van scrapers vraagt wat kennis en een significante hoeveelheid server- en netwerkcapaciteit. Als je de scraper en de data die hij verzamelt wilt faciliteren is een goede infrastructuur nodig.

Valkuil 5: De risico’s van bans, blacklisting en data spoofing

Een slecht geschreven web scraper wordt al snel ontdekt door detectie software op webservers. Het risico dat je loopt is een ban. Of dat je op de zwarte lijst wordt gezet. Daar gingen je web scraping inspanningen…

Soms wordt je niet gebanned of op een blacklist gezet, maar neemt de webserver je in de maling. In dit geval krijg je ‘nep content’ naar je toe geslingerd. De scraper verzamelt netjes wat hij tegen komt, maar uiteindelijk heb je niets aan de verzamelde data. Het slaat immers nergens op.

Conclusie: doe het goed of schoenmaker blijf bij je leest!

Het is dus noodzakelijk om veel aandacht te besteden aan het bouwen van een degelijke scraper en daarbij alle mogelijke variabelen mee te nemen om te zorgen dat de investering op de lange termijn wordt terugverdiend.

Ook vraagt de investering in een goede infrastructuur voldoende aandacht om de inspanningen draaiend te houden en de resultaten van de inspanningen veilig te stellen.

De moraal van het verhaal is dus: doe het goed of doe het niet (zelf) en besteedt het uit.

Kennis over web scraping

Gratis tips, onderzoeken, tutorials en downloads? Hier delen wij onze kennis over web scraping en data.

Updates ontvangen?

Wil je het laatste nieuws automatisch in je mailbox ontvangen? Schrijf je in!