{count, plural, one {Cursus} other {Cursussen}}
Snscrape is een krachtige Python-bibliotheek waarmee je data kunt scrapen van allerlei sociale netwerksites (SNS) zoals Facebook, Twitter, Instagram, Reddit en andere.
Door de focus op social media blinkt snscrape uit waar algemene webscrapingtools soms moeite hebben. Socialmediaplatforms hebben vaak unieke datastructuren en API’s die snscrape begrijpt.
Dat levert schonere, betrouwbaardere data-extractie op dan bij generieke webscrapers die om platformspecifieke eigenschappen heen moeten werken.
Wil je meer leren over generieke webscraping, bekijk dan deze cursussen over webscraping in Python en webscraping in R.
Snscrape in een notendop
Dit is een indruk van wat we met snscrape kunnen scrapen:
- Gebruikersprofielen: Verzamel openbare profielinformatie op verschillende platforms, zoals bio’s, aantallen volgers en plaatsgeschiedenis.
- Posts en content: Scrape tweets, Instagram-posts, Reddit-berichten en meer, afhankelijk van het platform. Je kunt zelfs specifieke hashtags, locaties of zoekopdrachten targeten om je dataverzameling te focussen.
- Sociale groepen en communities: Verdiep je in Facebook-groepen, Subreddits of Telegram-kanalen om groepsdiscussies en interacties te analyseren.
Hier is een overzicht van de specifieke datatypes die per platform worden ondersteund (gebaseerd op de officiële documentatie van snscrape):
|
Platform |
Ondersteunde data |
|
|
Gebruikersprofielen, Groepen, Communities |
|
|
Gebruikersprofielen, Hashtags, Locaties |
|
Mastodon |
Gebruikersprofielen, Toots (los of thread) |
|
|
Gebruikers, Subreddits, Zoekopdrachten |
|
Telegram |
Kanalen |
|
|
Gebruikers, Gebruikersprofielen, Hashtags, Zoekopdrachten, Tweets (los of thread), Lijstposts, Communities, Trends |
|
VKontakte |
Gebruikersprofielen |
|
Weibo (Sina Weibo) |
Gebruikersprofielen |
Snscrape installeren
Om aan de slag te gaan met snscrape moeten we het eerst installeren met pip of conda:
$ pip install snscrape
Gebruik je conda, vervang dan simpelweg het woord pip door conda in het bovenstaande codefragment.
Snscrape vereist Python 3.8 of hoger en mogelijk moet je ook de bibliotheken libxml2 en libxslt installeren.
Als de installatie klaar is, kunnen we socialmediadata gaan scrapen.
Snscrape gebruiken
Een van de sterke punten van snscrape is de command-line interface (CLI), die het ophalen van socialmediadata eenvoudig en efficiënt maakt.
Laten we beginnen met een voorbeeld van het scrapen van Facebook-data.
Belangrijk om vooraf te noemen: als je dit in je eigen werk wilt volgen, lees dan de actuele Servicevoorwaarden en robots.txt. Updates van de servicevoorwaarden kunnen aangeven dat geautomatiseerde dataverzameling, waaronder scraping, momenteel niet is toegestaan zonder voorafgaande schriftelijke toestemming.
Stel dat we Facebook-berichten van een specifieke pagina willen verzamelen.
Je kunt hiervoor de command-line interface (CLI) van snscrape gebruiken:
$ snscrape facebook-page "page_url" > posts.txt
In dit voorbeeld kunnen we “page_url” vervangen door de URL van de Facebook-pagina die we willen scrapen. Het resultaat wordt opgeslagen in een bestand met de naam posts.txt.
Als je net als ik bent, werk je bij complexe of terugkerende taken liever met scripts. Gelukkig kun je snscrape heel eenvoudig in een Python-script gebruiken:
import os
# Define the Facebook page URL
page_url = "your_page_url_here"
# Execute the snscrape command to retrieve posts
os.system(f"snscrape facebook-page {page_url} > posts.txt")
# Posts are saved in the 'posts.txt' file
print(f"Posts from '{page_url}' have been saved to 'posts.txt'.")
Houd er rekening mee dat veel socialmediapagina’s, waaronder Facebook, ongeautoriseerde scraping over het algemeen afraden en er actief tegen optreden. Je kunt in dit artikel meer lezen over Facebooks visie hierop.
Snscrape: geavanceerde technieken
Snscrape biedt geavanceerde functies om het verzamelproces te verfijnen. Zo kunnen we het aantal te scrapen resultaten opgeven, filteren op datumbereik of specifieke gebruikers of hashtags targeten.
Hier is een voorbeeld van het scrapen van posts binnen een specifiek datumbereik:
$ snscrape facebook-page "page_url" --since 2023-01-01 --until 2023-12-31 > posts.txt
We kunnen ook data van andere platforms zoals Reddit scrapen met vergelijkbare commando’s die zijn afgestemd op de syntaxis van elk platform. Zoals eerder genoemd ondersteunt snscrape momenteel scraping van:
- Mastodon
- Telegram
- VKontakte
- Weibo (Sina Weibo)
Globale opties
Snscrape heeft verschillende globale opties waarmee we onze scraping kunnen aanpassen.
Als we bijvoorbeeld JSON Lines willen in plaats van .txt-bestanden, kunnen we de globale optie jsonl gebruiken om onze scrapingresultaten in dat bestandsformaat op te slaan:
$ snscrape facebook-page "page_url" --jsonl > posts.jsonl
Een ander voorbeeld is het beperken van het aantal resultaten dat we ophalen met de optie max-results. Dit is vooral handig als we beperkte computerresources hebben of als de pagina die we scrapen veel data bevat:
$ snscrape facebook-page "page_url" --max-results 50 > limited_posts.txt
We kunnen ook extra informatie bij elke post scrapen, zoals de gebruikersprofielen en hashtags, door de entiteitsinformatie te verzamelen:
$ snscrape facebook-page "page_url" --with-entity > posts_with_entity.txt
Use-cases voor Snscrape
De mogelijkheid van snscrape om data van socialmediaplatforms te extraheren, opent de deur naar talloze toepassingen in verschillende domeinen. Laten we een paar aansprekende use-cases voor onderzoekers en bedrijven verkennen.
Onderzoek en academie
Scrapen van sociale netwerken heeft de volgende use-cases voor onderzoek en academie:
- Social listening en sentimentanalyse: Snscrape stelt onderzoekers in staat om de publieke opinie te analyseren en sentiment te peilen rondom specifieke gebeurtenissen—van wereldwijde conferenties en politieke debatten tot natuurrampen. Deze data kan worden gebruikt om de publieke perceptie te begrijpen, opkomende trends te identificeren en besluitvorming te ondersteunen. De verkregen informatie kan ook waardevol zijn voor beleggers om marktreacties op zulke gebeurtenissen te voorspellen.
- Netwerkanalyse en community-detectie: Door sociale connecties en interacties te scrapen kunnen onderzoekers netwerken in kaart brengen, invloedrijke gebruikers identificeren en begrijpen hoe informatie binnen communities stroomt. Deze kennis is nuttig voor het bestuderen van online bewegingen, sociale invloed en de verspreiding van informatie.
Bedrijven en marketing
Het scrapen van socialmediadata kan bedrijven helpen met:
- Brandmonitoring en reputatiemanagement: Bedrijven kunnen snscrape inzetten om online vermeldingen van hun merk te volgen en klantensentiment te monitoren. Zo kunnen ze potentiële crises sneller signaleren, klantvragen tijdig adresseren en de effectiviteit van marketingcampagnes meten.
- Concurrentieanalyse en marktonderzoek: Door data van concurrentprofielen en branchefora te scrapen, krijgen bedrijven waardevolle inzichten in concurrentstrategieën, klantvoorkeuren en opkomende trends in hun markt. Deze kennis kan worden gebruikt om marketingstrategieën aan te scherpen, concurrentievoordelen te ontwikkelen en productaanbod te optimaliseren.
Ethische overwegingen
Het waarborgen van gebruikersprivacy en het handhaven van ethische standaarden is essentieel bij dataverzameling via scraping.
Lees vóór je met een scrapingproject begint de servicevoorwaarden van het platform en maak een plan om de privacy van gebruikers te beschermen. Jij bent verantwoordelijk voor het waarborgen dat je dataverzameling voldoet aan de gebruiksregels en richtlijnen van de platforms, zoals snelheidslimieten, toegangsbeperkingen en toestemmingen voor contentgebruik. Door je aan deze voorwaarden te houden, voorkom je mogelijke juridische gevolgen en handhaaf je ethische normen in dataverzameling.
Ethische overwegingen hebben ook betrekking op het verantwoord omgaan met en opslaan van gescrapete data. Om gevoelige informatie te beschermen, moet je robuuste databeheerpraktijken toepassen, waaronder versleuteling, anonimisering en veilige opslagprotocollen. Zodra je de data hebt, ben jij verantwoordelijk om misbruik te voorkomen.
Snscrape: issues en troubleshooting
Hoewel snscrape veel mogelijkheden biedt voor het scrapen van socialmediadata, kunnen we verschillende problemen tegenkomen.
Authenticatiefouten
We kunnen fouten krijgen gerelateerd aan ongeldige gebruikersnamen, wachtwoorden of API-sleutels (afhankelijk van het platform).
We moeten onze inloggegevens dubbelchecken op typfouten of verlopen tokens. Ook kunnen we de officiële documentatie raadplegen voor specifieke authenticatie-eisen per platform dat we scrapen.
Snelheidslimieten
Socialmediaplatforms hanteren vaak snelheidslimieten om excessief scrapen te voorkomen. We kunnen foutmeldingen zien die aangeven dat we het toegestane aantal verzoeken per tijdseenheid hebben overschreden.
We moeten rekening houden met snelheidslimieten en het scrapetempo daarop aanpassen. Snscrape biedt opties zoals --wait om pauzes tussen verzoeken in te lassen. We kunnen ook overwegen om data in kleinere batches over de tijd te spreiden.
Fouten bij het parsen van data
Onverwachte veranderingen in de structuur of lay-out van het platform kunnen leiden tot parsefouten, waarbij snscrape moeite heeft de data te interpreteren.
We moeten up-to-date blijven met de nieuwste releases van snscrape, omdat ontwikkelaars deze issues vaak oplossen met platformupdates. We kunnen het GitHub-repository raadplegen voor gemelde issues en mogelijke workarounds.
Toegang geweigerd
In sommige gevallen kan het platform scrapingpogingen volledig blokkeren.
We moeten de servicevoorwaarden van elk platform respecteren en voorkomen dat we excessief scrapen of gevoelige data targeten. Als scraping strikt verboden is, moeten we alternatieve databronnen overwegen of onze onderzoeksaanpak aanpassen.
Troubleshooting
Hier zijn een paar handige tips voor soepeler scrapen:
- Klein beginnen: Start met kleine scrapes om je commando’s te testen en eventuele problemen te identificeren voordat je grotere dataverzamelingen probeert.
- Lees de documentatie: De officiële snscrape-documentatie biedt waardevolle inzichten in scraper-specifieke opties en best practices. Raadpleeg deze regelmatig om te troubleshooten en je scraping te optimaliseren.
- Sluit je aan bij de community: De snscrape-community op GitHub is een uitstekende bron om oplossingen voor veelvoorkomende problemen te vinden en te leren van de ervaringen van anderen.
Conclusie
In deze tutorial hebben we de basis behandeld van het gebruik van snscrape om data van verschillende sociale netwerken te extraheren. We hebben snscrape geïnstalleerd en gebruikt via de CLI en Python, en we hebben use-cases, ethische overwegingen en troubleshooting-technieken verkend.
Je kunt je leertraject vervolgen met onderwerpen als sentimentanalyse, data-ethiek of analyse van socialmediadata:
Ik ben gepromoveerd en heb 13 jaar ervaring met het werken met data in een biologische onderzoeksomgeving. Ik maak software in verschillende programmeertalen, waaronder Python, MATLAB en R. Ik deel met plezier mijn liefde voor leren met de wereld.

