Gegevens van een website scrapen met Google Sheets
Web scraping is een krachtige techniek om informatie van websites te halen en automatisch te analyseren. Hoewel je dit handmatig kunt doen, kan het een vervelende en tijdrovende taak zijn. Web scraping tools maken het proces sneller en efficiënter, terwijl ze minder kosten.
Google Sheets kan namelijk dienen als een allesomvattende oplossing voor web scraping, dankzij de ingebouwde IMPORTXML-functie. Met deze functionaliteit kunnen gebruikers eenvoudig informatie van verschillende websites halen, die vervolgens kan worden gebruikt voor een reeks toepassingen zoals gegevensanalyse, rapportage en elke taak waarvoor gegevensgedreven inzichten nodig zijn.
De functie IMPORTXML in Google Sheets
Door gebruik te maken van de ingebouwde functionaliteit van Google Sheets, bekend als “IMPORTXML”, is het mogelijk om informatie te extraheren uit verschillende webbronnen, waaronder XML-, HTML-, RSS- en CSV-indelingen. De implementatie van deze functie kan het proces van gegevensverzameling van websites stroomlijnen zonder dat er uitgebreide programmeerkennis voor nodig is.
Dit is de basissyntaxis van IMPORTXML:
=IMPORTXML(url, xpath_query)
De Uniform Resource Locator (URL) specificeert het adres van een bepaalde webpagina waaruit men informatie wil halen met behulp van web scraping-technieken.
De XPath-query vertegenwoordigt de precieze taal die wordt gebruikt voor het selecteren van specifieke informatie uit een XML-document, waarin de gewenste gegevens worden geschetst die men eruit wil halen.
XPath, of de XML Path Language, dient als navigatiehulpmiddel voor het verkennen en extraheren van informatie uit XML-documenten, waaronder HTML. Met deze taal kunnen gebruikers de specifieke locaties van gewenste gegevenselementen binnen een HTML-structuur identificeren. Het begrijpen van de grondbeginselen van XPath-query’s is cruciaal voor het effectief gebruiken van de functie IMPORTXML.
XPath begrijpen
XPath biedt een reeks functies en operatoren waarmee gegevens in een HTML-document kunnen worden gemanipuleerd en gefilterd. Hoewel het buiten het bestek van dit stuk zou vallen om een uitputtend overzicht te geven van zowel XML als XPath, zal ik hier enkele fundamentele principes van XPath presenteren:
Door elementen te selecteren met behulp van scheidingstekens zoals forward slashes ("/") en double slashes (//) kunnen specifieke paden binnen een HTML-document worden geïdentificeerd. Bijvoorbeeld: “/html/body/div” identificeert alle exemplaren van “div”-elementen in het gedeelte “body” van een HTML-document in de map “html”.
Om specifieke attributen van een gegeven webpagina te identificeren en te extraheren, kan men verschillende selectiecriteria gebruiken op basis van attribuutnaamconventies of andere identificeerbare patronen. Door gebruik te maken van een geschikte selector, zoals “@href” in dit geval, is het mogelijk om alle exemplaren van de “href”-attributen in het document op te halen. Met deze aanpak kan relevante informatie efficiënt worden opgehaald terwijl irrelevante gegevens worden uitgefilterd.
Elementen filteren met behulp van Predicaten tussen vierkante haken is een mechanisme waarmee specifieke elementen kunnen worden geselecteerd op basis van bepaalde criteria die tussen vierkante haken zijn gespecificeerd. Dit kan gedaan worden door attributen of klassen van HTML-tags te gebruiken. Een voorbeeld is het selecteren van alle
elementen met het attribuut class
gelijk aan “container” met de syntaxis /div[@class="container"]
.
XPath biedt een reeks functies, waaronder de mogelijkheid om te bepalen of een gegeven element binnen een ander element valt met behulp van de functie “contains()”, om te controleren of de tagnaam van een element begint met een opgegeven tekenreeks met behulp van de functie “starts-with()” en om de tekstwaarde van een element te extraheren met behulp van de functie “text()”. Met deze functies kunnen gebruikers gerichte bewerkingen op XML-documenten uitvoeren op basis van specifieke criteria.
XPath extraheren uit een website
Het extraheren van het XPath van een element met IMPORTXML kan een uitdagende taak zijn voor degenen die bekend zijn met de syntaxis van de functie, de URL van de doelwebsite kennen en het specifieke element dat ze willen ophalen, hebben geïdentificeerd. Het proces bestaat uit het identificeren van de unieke identifier of attributen die aan het gewenste element zijn gekoppeld en het vervolgens gebruiken van deze informatie in combinatie met de XPath-formule om het juiste pad naar het element binnen de XML-structuur van de webpagina te genereren.
Men hoeft de architectuur van een website niet in zijn geheel te onthouden om er informatie uit te halen met IMPORTXML. In feite biedt elk webbrowserplatform een efficiënt hulpmiddel waarmee je moeiteloos het XPath van een willekeurig element kunt reproduceren.
Met de tool “Inspect Element” kan een XML Path Language (XPath) worden geëxtraheerd uit verschillende onderdelen van webpagina’s via een vereenvoudigd proces, zoals hieronder wordt beschreven:
Open de gewenste webpagina met een voorkeurstoepassing voor internetbrowsing, zoals Google Chrome of Mozilla Firefox.
Het gewenste data-element ophalen door de locatie ervan te identificeren in de broncode van de webpagina met behulp van een web scraping tool zoals Beautiful Soup of Scrapy.
⭐Rechtsklik op het element.
Om de functie “Inspect Element” te gebruiken, kun je deze selecteren in het contextmenu dat je krijgt door met de rechtermuisknop op de webpagina te klikken terwijl je de muisknop ingedrukt houdt. Deze actie zorgt ervoor dat de browser een interactief paneel weergeeft dat de onderliggende HTML-markup van de pagina laat zien, waarbij het specifieke element in kwestie visueel wordt onderscheiden binnen deze code.
Klik eerst op het element dat je wilt wijzigen in je webpagina. Zoek vervolgens de optie “Inspecteren” in het contextmenu dat verschijnt als je met de rechtermuisknop klikt. Als je dit gedaan hebt, selecteer je het gewenste element uit de lijst met elementen die in de HTML-code verschijnen voor verdere bewerking of manipulatie.
Klik op de onderstaande knop om een XPath-expressie voor het geselecteerde element te genereren, die je vervolgens gemakkelijk naar je klembord kunt kopiëren.
Nu we de benodigde informatie hebben verkregen, gaan we verder met het demonstreren van de praktische toepassing van IMPORTXML door URL’s uit een gegeven webpagina te extraheren.
Hoe koppelingen van een website schrapen met IMPORTXML
Door gebruik te maken van de krachtige mogelijkheden van IMPORTXML, kan een uitgebreide reeks informatie van verschillende websites worden gehaald. Dit omvat niet alleen tekstuele inhoud, maar ook multimedia zoals afbeeldingen en video’s, evenals vrijwel alle denkbare componenten die op de site aanwezig zijn. Onder deze componenten zijn hyperlinks van bijzonder belang vanwege hun belang voor het begrijpen van de structuur en hiërarchie van een webpagina. Door te kijken naar de bestemmingen waarnaar een bepaalde pagina is gelinkt, kunnen waardevolle inzichten worden verkregen in de aard en focus van die website.
Door IMPORTXML in Google Sheets te gebruiken, kunnen URL’s snel uit webpagina’s worden geëxtraheerd, wat de daaropvolgende analyse met behulp van de functies van het platform vergemakkelijkt.
Alle koppelingen schrapen
Om alle URL’s op een bepaalde webpagina te extraheren, kan de volgende methode worden gebruikt:
=IMPORTXML(url, "//a/@href")
De gegeven XPath-expressie haalt elk “href”-attribuut op dat is gekoppeld aan elke instantie van een “a”-element, waardoor met succes alle hyperlinks op de webpagina worden geïsoleerd en verzameld.
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a/@href")
Het bovenstaande algoritme haalt elke hyperlink uit een Wikipedia-item.
Het opnemen van de praktijk om de URL van een webpagina in een aparte cel in te voeren en daarnaar te verwijzen is een slimme aanpak, omdat deze maatregel helpt beknopte formules te behouden terwijl rommel of complexiteit wordt vermeden.Een soortgelijke tactiek kan worden toegepast bij het formuleren van XPath-query’s voor naadloze navigatie binnen de context van gegevensanalyse.
Alle linkteksten schrapen
Om de inhoud van de hyperlinks op te halen, naast hun respectievelijke uniform resource locators, kan de volgende aanpak worden gebruikt:
=IMPORTXML(url, "//a")
Dit onderzoek omvat het ophalen van alle elementen, waarbij de geëxtraheerde linktekst en bijbehorende URL’s kunnen worden verkregen uit het resultaat.
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a")
De bovenstaande formulering haalt de ankertekst binnen het identieke Wikipedia-item op.
Hoe specifieke links van een website schrapen met IMPORTXML
Soms is het nodig om webpagina’s van bepaalde websites op te halen die bepaalde sleutelwoorden bevatten of die zich in bepaalde delen van de webpagina bevinden.
Met een goed begrip van XPath kan het gewenste element nauwkeurig worden geïdentificeerd en gelokaliseerd.
Links schrapen die een trefwoord bevatten
Om URL’s te extraheren die een bepaald trefwoord bevatten met behulp van XPath, kan men de functie “contains()” gebruiken:
=IMPORTXML(url, "//a[contains(@href, 'keyword')]/@href")
De gegeven query haalt de href-waarden op van HTML-elementen waarvan het href-attribuut een specifieke zoekterm bevat, volgens de opgegeven criteria.
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a[contains(@href, 'record')]/@href")
Het voorgaande algoritme extraheert elke hyperlink die is ingebed in een gespecificeerde instantie van geschreven inhoud die is gevonden op de online encyclopedie, waarin de term “record” aanwezig is in de body van de genoemde link.
Links binnen een sectie schrapen
Om links uit een specifiek deel van een webpagina te extraheren, kan een XPath-expressie worden gebruikt om de gewenste sectie te identificeren. Neem ter illustratie het volgende codefragment:
=IMPORTXML(url, "//div[@class='section']//a/@href")
De bovenstaande vraag heeft betrekking op de selectie van hyperlinkattributen die zijn gekoppeld aan HTML-elementen die zijn gecategoriseerd als “div” en de aanduiding “sectie” hebben, waarbij dit attribuut gewoonlijk wordt gebruikt voor het identificeren van koppelingen of het navigeren tussen webpagina’s, waardoor gebruikersinteractie op digitale platforms wordt vergemakkelijkt.
De bovenstaande formule richt zich op alle hyperlinks die zijn ingebed in een HTML-element met het class attribuut “mw-content-container” en genest in een containerelement waarvan het id-attribuut is ingesteld op “mainpage”.
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//div[@class='mw-content-container']//a/@href")
Het is inderdaad belangrijk om te beseffen dat de functionaliteit van IMPORTXML verder gaat dan eenvoudige schraapbewerkingen op het web.Met de IMPORT-familie van functies kunnen gebruikers naadloos gestructureerde gegevenstabellen rechtstreeks importeren in Google Sheets vanuit verschillende bronnen op het internet. Met deze functie kunnen gebruikers efficiënt informatie verzamelen en organiseren zonder elk gegeven afzonderlijk handmatig te moeten invoeren.
Hoewel zowel Google Sheets als Microsoft Excel een groot aantal vergelijkbare functies hebben, is het belangrijk op te merken dat de IMPORT-familie van functies exclusief is voor Google Sheets. Bijgevolg moeten alternatieve strategieën worden onderzocht wanneer wordt geprobeerd om gegevens uit webbronnen in Microsoft Excel te extraheren.
Webscraping vereenvoudigen met Google Sheets
Google Sheets gebruiken in combinatie met de functie IMPORTXML zorgt voor een aanpasbare en toegankelijke methode om informatie van webpagina’s te extraheren, waardoor het een populaire keuze is onder degenen die online gegevens willen verzamelen.
Door XPath goed te gebruiken en efficiënte query’s te formuleren met IMPORTXML, kan men alle mogelijkheden benutten en informatie van onschatbare waarde extraheren uit internetbronnen. Als je dus begint met het extraheren van gegevens door middel van web scraping, til je je analytische vaardigheden naar een hoger niveau.