Een korte tutorial om weergegevens te schrapen met geannoteerde scripts (deel 1/3)

Een van de belangrijkste onderzoeksthema's in ons lab is sociale thermoregulatie. Daarom omvat veel van ons onderzoek het verzamelen van temperatuurgegevens in verschillende vormen (zoals de kern- of perifere lichaamstemperatuur van de deelnemer of de omgevingstemperatuur in het laboratorium). 

Voor een van onze projecten die we dit jaar uitvoeren, hebben we ons gericht op een iets andere temperatuur: historische weergegevens van meer dan 26,000 locaties tussen de jaren 2012 en 2020. We verzamelden ook weergegevens voor andere projecten, waaronder projecten van de Psychologische wetenschapsversneller. In totaal moesten we weergegevens verzamelen voor meer dan 10,000,000 datapunten.

Tenzij u bereid bent al deze gegevens handmatig op te halen, zijn enige programmeervaardigheden nodig om deze taak te voltooien. Deze serie van drie berichten laat je kennismaken met de massale extractie van online gegevens, een praktijk die kan worden bestempeld onder de term 'webscraping'.

In het eerste bericht van deze serie zullen we het concept van webscraping definiëren en u kennis laten maken met de belangrijkste principes ervan. In het tweede bericht zullen we de API (hieronder gedefinieerd) introduceren die we hebben gekozen om gegevensschrapen uit te voeren en de belangrijkste gegevensschrapingscripts te bespreken (en ook een openbare versie van onze gegevensschrapingscripts beschikbaar te stellen), en vervolgens in het derde bericht , laten we zien hoe de scripts kunnen worden gebruikt, zelfs voor degenen die minimaal bekend zijn met programmeren.

Wat is webschrapen?

Het Wikipedia-definitie van webschrapen is "datascraping gebruikt voor het extraheren van gegevens van websites". Met andere woorden, webscraping bestaat uit het extraheren van gegevens die ergens op een website zijn opgeslagen. 

Hier is een concreet voorbeeld: wanneer je naar de site gaat https://www.weather.com, krijgt u de huidige temperatuur en weersomstandigheden van een locatie. Dit was wat we kregen toen we naar deze site gingen:

De schrapen temperatuur- als weersomstandigheden weergegeven op deze pagina zou bestaan ​​uit het extraheren van de volgende gegevens: 27 ° C als Tres nuageux (= erg bewolkt in het Engels).

Het handmatig extraheren van deze gegevens is eenvoudig en kost niet veel moeite: u hoeft alleen maar de bovenstaande URL te openen en de pagina te lezen. Maar stel je nu voor dat je dit 10,000,000 keer moet doen voor heel verschillende locaties. Dit kan een koninklijke pijn zijn en gewoon niet de moeite waard. Met het schrapen van gegevens kunt u automatiseren wat een kolossale taak zou zijn geweest als u deze handmatig had voltooid.

Hoe kunnen we gegevensextractie van een website automatiseren?

De gegevens die u op een webpagina ziet, worden allemaal (op een min of meer transparante manier) opgeslagen in de broncode van die webpagina. Hier is een voorbeeld van de broncode van de weather.com-pagina die we eerder hebben bezocht (u kunt zien hoe u toegang krijgt tot de broncode van een webpagina in Google Chrome CDL Super Session.): 

Zoals u kunt zien, de temperatuur- als weersomstandigheden gegevens waarin we geïnteresseerd waren (27 ° C als Tres nuageux) zijn gedocumenteerd in de broncode van die webpagina. Omdat de informatie beschikbaar is in de broncode, kunt u een script programmeren dat de gegevens extraheert door de broncode van de webpagina te 'parsen'. Het programmeren van een webschrapscript vereist programmeerkennis in een taal waarmee u internetverzoeken kunt uitvoeren (zoals python of R).

Het extraheren van gegevens uit de broncode van een webpagina is mogelijk omdat de broncode van een webpagina over meerdere toegangen vaak dezelfde structuur heeft. Vergelijk het met een huis: als we verschillende klonen van je huis hebben gebouwd, heb je geen kaart nodig om je weg naar de badkamer in een van de klonen te vinden, wat betekent dat je je geen zorgen hoeft te maken in geval van nood .

U kunt het zelf proberen door te zoeken naar weergegevens voor een andere plaats in de zoekbalk van https://www.weather.com en je zult vinden dat temperatuur- als weersomstandigheden zijn beide gedocumenteerd in de broncode van de webpagina op een zeer nauwkeurige manier over toegangen (nogmaals, zie CDL Super Session. hoe de broncode van een webpagina te vinden in Google Chrome):

De rol van een API

Misschien heb je de indruk gekregen dat webscraping niet altijd een gemakkelijke taak is. De reden waarom we het zo hebben geformuleerd, is dat de meeste online services niet bepaald enthousiast zijn om hun gegevens te delen zonder financiële compensatie. Dit leidt de meeste van hen tot het blokkeren van pogingen om gegevens te schrapen. 

Hier zijn een paar wegversperringen die u kunt tegenkomen bij het schrapen van de inhoud van webpagina's:

  • Gegevens die u op een webpagina ziet, zijn mogelijk niet gedocumenteerd in de broncode van die webpagina (of in ieder geval niet rechtstreeks, als deze bijvoorbeeld dynamisch is gegenereerd via JavaScript).
  • De structuur van de broncode kan variëren van toegang tot toegang, waarbij variabelenamen dynamisch worden gegenereerd.
  • De website kan uw scrappogingen detecteren en blokkeren door uw aantal toegangen per minuut te beperken (indien niet alle toegangen worden geblokkeerd).

In ons geval vereiste het extraheren van enorme historische weergegevens dat we ons moesten abonneren op een Application Programming Interface (beter bekend als API).

Kortom, een API is een interface tussen jou (tegenhanger A) en de dienst waaruit je gegevens wilt halen (tegenhanger B). Deze interface is gebouwd om de communicatie tussen de twee tegenhangers te vergemakkelijken, met gestandaardiseerde communicatiemiddelen voor zowel het vragen als het ontvangen van de gegevens.

Er bestaan ​​verschillende API's voor dezelfde informatie (zoals het weer). Hun prijzen variëren afhankelijk van meerdere factoren, zoals de kwaliteit van de verstrekte gegevens of het aantal toegangen dat binnen een bepaalde periode wordt verleend.

Slotopmerkingen

In dit bericht hebben we de basisprincipes van webscraping beschreven en hoe u dit kunt uitvoeren. 

In het tweede bericht van deze serie zullen we je kennis laten maken met de API die we hebben gekozen om data scraping uit te voeren en we zullen het belangrijkste onderdeel beschrijven van de data scraping-scripts die een van ons (Bastien) heeft geprogrammeerd.

Dit bericht is geschreven door Bastien Paris en Hans IJzerman

2 gedachten over 'Een korte tutorial om weergegevens te schrapen met geannoteerde scripts (deel 1/3)"

Laat een reactie achter

Deze site gebruikt Akismet om spam te verminderen. Ontdek hoe uw reactiegegevens worden verwerkt.

%d bloggers als volgt uit: