Ga verder naar de inhoud

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.

Disclaimer: Deze handleiding is gemaakt in februari 2021. Merkt u dat er iets niet werkt? Mail dan Nastasia

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.

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

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.

  • Download een van volgende configuratiebestanden
  • 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.

  • 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 (vervang pad/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.

  • 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:

:* 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 .

  • 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.

  • 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/*.

  • 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 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:

  1. sluit het tabblad waarin de crawl bezig is, soms opent browsertrix een nieuw tabblad en gaat het zo verder
  2. stop de huidige crawl
  3. 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.

Licentie

  • CC-BY-SA

Collectie

Expertisedomein

Verwante software

Verwante standaarden

Deze pagina is laatst aangepast op 19 juni 2024

Deze pagina aanvullen of corrigeren?

Heb je aanvullingen of wil je iets rechtzetten? Dan kan je deze pagina makkelijk bewerken via onderstaande knop.