Publicatie:Individuele sociale media posts archiveren met snscrape en Browsertrix
In het kader van het project Best practices voor de archivering van sociale media in Vlaanderen en Brussel werden verschillende tools getest om socialemediaplatformen te archiveren. Deze handleiding beschrijft hoe de tools Browsertrix en snscrape gebruikt kunnen worden om publieke accounts op Facebook, Twitter en Instagram te archiveren.
Titel | Individuele sociale media posts archiveren met snscrape en Browsertrix (Voorkeurstitel) |
Locatie | |
Uitgever | |
Jaar van uitgave | 2021 |
Rechten | CC-BY-SA |
Persistent ID |
Disclaimer: Deze handleiding is gemaakt in februari 2021. Merkt u dat er iets niet werkt? Mail dan Nastasia Vanderperren
Snscrape is software waarmee de URL van iedere resource (post, video, afbeelding) op een socialemediaplatform opgehaald kan worden om ze op te slaan in een tekstbestand. Browsertrix is een webcrawler die geschikt is voor het archiveren van dynamische webpagina’s waarvoor je je moet inloggen, zoals sociale media.
Vereisten
- Docker;
- Docker-Compose;
- Python 3.8 of hoger: je kan je controleren of je Python hebt, en de versie, via het commando
python -V
; - git: je kan controleren of je git hebt, via het commando
git --version
; - geen schrik van de command line.
Voordelen
- werkt op Windows, macOS en Linux;
- geschikt voor Twitter en Instagram;
- geautomatiseerd;
- door individuele posts en resources te archiveren heb je meer kans dat alle content gearchiveerd wordt, het eindeloos scrollen van socialemediaplatformen zorgt immers voor problemen bij crawlers (zie ook de handleiding Sociale media archiveren met Browsertrix);
- individuele posts zoeken is eenvoudiger dan scrollen naar de juiste post (ingebouwde zoekfuncties werken niet in gearchiveerde websites).
Nadelen
- werkt enkel voor publieke accounts;
- sinds maart 2021 wordt snscrape geblokkeerd door Facebook waardoor het niet gebruikt kan worden voor dit platform.
Workflow
Stap 1: installeer snscrape
Snscrape wordt geïnstalleerd via pip, de Python package manager.
- open een terminalvenster;
- typ in het venster:
pip3 install snscrape
; - upgrade snscrape naar de laatste versie:
pip3 install --upgrade git+https://github.com/JustAnotherArchivist/snscrape@master
.
Snscrape is nu goed geïnstalleerd.
Stap 2: vraag URL's op van iedere post, foto en video
Gebruik snscrape om van iedere post een URL op te vragen die later door Browsertrix gebruikt kan worden om de content te archiveren.
- Open een terminalvenster.
- Zoek de naam van het account dat je wil archiveren. Standaard staat dit achter de basis URL van het socialemediaplatform, zoals https://www.facebook.com/meemoo.be, https://twitter.com/meemoo_be en https://www.instagram.com/vlaparl. meemoo.be, meemoo_be en vlaparl zijn hier respectievelijk de naam van het account.
- Voer een van onderstaande commando’s uit voor het socialemediaplatform van het account. Vervang naam (ook in naam.txt) telkens door de naam van het account.
- Facebookpagina:
snscrape facebook-user naam > naam.txt
- Instagramgebruiker:
snscrape instagram-user naam > naam.txt
- Twitteraccount:
snscrape twitter-user naam > naam.txt
- Facebookpagina:
Het commando zorgt ervoor dat de data van het platform gedownload en vervolgens opgeslagen worden in het bestand naam.txt. In de volgende stappen zullen we dit bestand naam.txt blijven noemen.
Stap 3: maak een configuratiebestand voor Browsertrix
Crawls in Browsertrix worden gecreëerd via een configuratiebestand. Pas het configuratiebestand voor het socialemediaplatform naar keuze aan en plak de URL’s uit stap 2 hierin.
- Open het configuratiebestand met Teksteditor, Kladblok of Notepad++ en vervang volgende gegevens:
- name: de naam voor je crawl, bv. 20210115_facebook_meemoo_be (let op: spaties zijn niet toegelaten);
- coll: verander dit ook in de naam van de crawl (let op: spaties zijn niet toegelaten);
- vervang onder seed_urls facebook-page, twitter-user of instagram-user in de naam van het account dat je gaat archiveren, bv. meemoo.be of vlaparl (zie Stap 2 om de naam van het account te vinden).
- Download vervolgens het script snscrape_to_browsertrix.py om de URL’s in het tekstbestand naam.txt, dat in de vorige stap gecreëerd werd, om te vormen naar een vorm die geschikt is voor het Browsertrix-configuratiebestand.
- Voer het script uit in een terminalvenster met het commando:
python3 snscrape_to_browsertrix.py naam.txt
(wijzig naam.txt in de bestandsnaam van het bestand dat je in stap 2 gecreëerd hebt).
- Open naam.txt en plak de inhoud onder de lijst van URL’s die al onder seed_urls staan (zie afbeelding).
Stap 4: gebruik Browsertrix om alle URL’s te capteren
Browsertrix zal gebruikt worden om de URL's uit naam.txt te crawlen.
Zorg dat Docker en Docker-Compose geïnstalleerd zijn op je computer en dat Docker opgestart is, voordat je Browsertrix installeert en gebruikt.
Installeer de software
Ter illustratie wordt Browsertrix hier geïnstalleerd op het bureaublad/Desktop
- Open een terminalvenster en navigeer naar de Desktop
- voor Windows:
cd c:\Users\(username)\Desktop
(vervang (username) door je gebruikersnaam); - voor macOS:
cd ~/Desktop
.
- voor Windows:
- Haal de code van Browsertrix op door
git clone https://github.com/webrecorder/browsertrix
in te geven in de terminal of door ze te downloaden. Pak de map uit indien je de code gedownload hebt.
- Open een terminalvenster en navigeer naar de Browsertrix-map via het commando
cd pad/naar/browsertrix
(vervangpad/naar/browsertrix
door het juiste pad voor de Browsertrix-map). Als de map op je Desktop staat, dan is het commando:- voor Windows:
cd c:\Users\(username)\Desktop\browsertrix
(vervang (username) door je gebruikersnaam); - voor macOS:
cd ~/Desktop/browsertrix
.
- voor Windows:
- Installeer de Browsertrix command line interface door in de terminal het commando
python3 setup.py install
in te voeren.
- Vervolgens kan je via het commando
.\install-browsers.sh
(Windows) of./install-browsers.sh
(macOS, Linux) extra virtuele bowsers installeren die door Browsertrix gebruikt worden bij het crawlen.
- Laat Docker de Browsertrix-omgeving bouwen via het commando
docker-compose build
.
Start de software
- Ga verder in het terminalvenster van stap 1. Geef het commando
docker-compose up -d
in om Browsertrix op te starten
Vanaf het moment dat Browsertrix opgestart is, kan Browsertrix gebruikt worden om websites te archiveren.
Via http://localhost:8000 kan de Browsertrix-webinterface geconsulteerd worden. Dit kan je gebruiken om de voortgang van je crawls op te volgen. De interface is nog in ontwikkeling en kent enkele bugs.
Creëer een profiel
Om websites te archiveren die beveiligd zijn met een wachtwoord (zoals sociale media) kan je een profiel aanmaken. Op deze manier wordt ook vermeden dat deze privacygevoelige gegevens opgenomen worden in een WARC-bestand. Voor Facebook en Instagram is het noodzakelijk om in te loggen om goed de lay-out te archiveren.
Om een profiel te maken:
- Voer je het commando
browsertrix profile create
in een terminalvenster. - Vervolgens zal er een browser openen. Deze kan je gebruiken om te navigeren naar de websites die je wil capteren en inloggen.
- Inloggen in Facebook kan voor wat problemen zorgen. Volg deze stappen om dit succesvol te doen:
- Ga naar https://www.facebook.com en log je in.
- Je zal een bericht krijgen dat het niet gelukt is.
- Ga naar https://m.facebook.com en log in.
- Ook nu kan het gebeuren dat je een bericht krijgt dat het niet gelukt is. Herlaad de pagina en log opnieuw in.
- Je bent ingelogd op de mobiele versie van Facebook. Als je nu terugkeert naar https://www.facebook.com zal je merken dat je nog steeds ingelogd hebt. Het inloggen is gelukt!
- Nadat je overal ingelogd bent, is het belangrijk om de cache-inhoud te verwijderen. Indien je dat niet doet, zal Browsertrix de gecachte content niet mee archiveren.
- Klik hiervoor op de drie puntjes in de Chrome-browser rechtsboven en kies voor Settings.
- Kies voor Advanced.
- Scroll naar beneden tot je Clear browsing data tegenkomt.
- Vink Browsing history en Cached images and files aan. Het is belangrijk dat Cookies and other site data niet aangevinkt is!
- Daarna ga je terug naar je terminalvenster. Geef een naam aan het profiel en druk <enter>.
- Het profiel is aangemaakt. Je kan kiezen om een nieuw profiel te maken door ‘Y’ in te geven of te stoppen via ‘N’. Als je stopt, kan je de browser nu sluiten.
Je bent nu klaar om dit profiel te gebruiken bij het archiveren van een website. Met dit profiel kan je nu telkens inloggen om een of meerdere accounts naar keuze te archiveren.
Hou het terminalvenster open voor de volgende stap.
Start een crawl
Vervolgens start je de crawl.
- Gebruik het commando
browsertrix crawl create configuratie.yaml --profile profiel --watch
. Vervang configuratiebestand.yaml door het pad of naam van je configuratiebestand dat je in Stap 3: maak een configuratiebestand voor Browsertrix aangemaakt hebt en profiel door de naam van het profiel. De optie--watch
zorgt ervoor dat er een browservenster geopend wordt waarin je de geautomatiseerde crawl kan volgen.
- Je ziet de browser van post naar post gaan of doorheen de pagina scrollen en media openen.
- Als Browsertrix blijft hangen of bepaalde delen niet capteert, kan je zelf tussenkomen. Bij Instagram vergeet Browsertrix soms de individuele posts te openen. Door zelf een post te openen in de browser, maak je Browsertrix attent van de individuele posts en begint het zelf de posts te openen.
Voeg de verschillende WARC-bestanden samen (optioneel)
Browsertrix creëert standaard verschillende WARC-bestanden tijdens een crawl. Om het gehele webarchief te openen in een WARC-player buiten Browsertrix, moet je de verschillende bestanden samenvoegen tot één WARC-bestand. Je kan dit doen met de tool warcat.
- Open een terminalvenster en installeer warcat met het commando
pip3 install warcat
. - Zoek de WARC-bestanden in de Browsertrix-map. Je vindt ze in de map webarchive > collections > naam van collectie > archive.
- Maak een mapje met de naam WARC op je bureaublad en kopieer hierin de verschillende WARC-bestanden van Browsertrix.
- Open een terminalvenster en ga via de terminal naar je bureaublad:
- in Windows gebruik je het commando:
cd c:\Users\(username)\Desktop
(vervang (username) door je gebruikersnaam); - in macOS is dit via het commando:
cd ~/Desktop
.
- in Windows gebruik je het commando:
- Vervolgens typ je in de terminal het commando om van de verschillende WARC-bestanden één WARC-bestand te maken:
- op Windows:
python3 -m warcat --output output.warc.gz --force-read-gzip --gzip --progress concat WARC\*
; - op macOS:
python3 -m warcat --output output.warc.gz --force-read-gzip --gzip --progress concat WARC/*
.
- op Windows:
- Zodra warcat klaar is, moet er op je bureaublad een bestand output.warc.gz verschijnen. Je kan dit bestand een betere naam geven en vervolgens het mapje WARC verwijderen.
Resultaat
Je hebt nu een WARC-bestand waarin alle individuele posts bewaard worden. Dit houdt in dat je niet eindeloos kan scrollen doorheen de wall of timeline maar dat je de URL van de posts moet gebruiken om ze apart te bekijken.
De webinterface van Browsertrix heeft zelfs full text search waarmee je in de tekst van socialmediaposts kan zoeken.
- Open een browser en ga naar http://localhost:8180.
- Klik op de naam van je collectie.
- Typ een woord in de zoekbalk. Nadat je op <enter> gedrukt hebt, verschijnen alle posts waarin deze term opgenomen is.
Troubleshooting
snscrape geeft een error bij het ophalen van URL's van Facebook
Eind maart 2021 werd vastgesteld dat Facebook snscrape blokkeert (issue #208). Tot zolang de developers achter snscrape dit niet hersteld hebben, kan deze handleiding niet gebruikt worden voor Facebook. Je kan wel proberen Facebook te archiveren met enkel Browertrix. Bekijk hiervoor de handleiding Sociale media archiveren met Browsertrix.
SyntaxError: invalid syntax of NameError: name `snscrape` is not defined op Windows
Deze error betekent dat Windows het programma snscrape niet vindt op je computer. Je kan dit oplossen door het commando aan te passen. In plaats van snscrape [rest van commando]
gebruik je python -m snscrape [rest van commando]
voorbeeld: python -m snscrape twitter-user meemoo_be > naam.txt
snscrape: the term `snscrape` is not recognized as the name of a cmdlet, script file, or operable program in Windows PowerShell of command prompt
Deze error betekent dat PowerShell/Command prompt het programma snscrape niet vindt op je computer. Je kan dit oplossen door het commando aan te passen. In plaats van snscrape [rest van commando]
gebruik je python -m snscrape [rest van commando]
voorbeeld: python -m snscrape twitter-user meemoo_be > naam.txt
browsertrix: the term `browsertrix` is not recognized as the name of a cmdlet, script file, or operable program in Windows PowerShell of command prompt
Deze error betekent dat PowerShell/Command prompt het programma Browsertrix niet vindt op je computer. Je kan dit oplossen door het commando aan te passen. In plaats van browsertrix [rest van commando]
gebruik je python -m browsertrix [rest van commando]
voorbeeld: python -m browsertrix crawl create configuratie.yaml --profile profiel --watch
Browsertrix is vastgelopen
Een veel voorkomend probleem van Browsertrix is dat het vastloopt. Vaak heeft dit te maken met netwerk issues of beperkingen van het platform. Geen zorgen. Er is nog steeds een webarchief aangemaakt (zie stap 7 om de locatie hiervan te vinden), maar het zal niet volledig zijn.
Er zijn nog een aantal zaken die je kan proberen:
- sluit het tabblad waarin de crawl bezig is, soms opent browsertrix een nieuw tabblad en gaat het zo verder
- stop de huidige crawl
- start een nieuws crawl
(verder uit te werken)
Twitter laat weten dat mijn rechten beperkt zijn omwille van rate limits
Rate limits zijn beperkingen die een website, in dit geval Twitter, oplegt bij het gebruik van het platform. Als je in korte tijd te veel tweets opent, krijg je een melding dat er een fout gebeurd is en worden pagina's niet meer geladen. Het wordt onder meer gebruikt om te vermijden dat de website het slachtoffer wordt van een cyberaanval. Het is helaas niet mogelijk om in Browsertrix in te stellen dat het meer tijd moet laten tussen het openen van de verschillende tweets, waardoor dit probleem niet te vermijden is bij grotere accounts. We merkten wel dat na een tijd de beperking opgeheven werd en dat tweets vanaf dan weer geopend kunnen worden.