Publicatie:Facebook groepen archiveren

Uit Meemoo Kennisbank
Naar navigatie springen Naar zoeken springen


Samenvatting

In het kader van het project Best practices voor de archivering van sociale media in Vlaanderen en Brussel werden verschillende tools getest om verschillende sociale media platformen te archiveren.
Deze publicatie beschrijft hoe Facebook groepen te archiveren met snscrape en wget. Tot op heden is snscrape niet meer bruikbaar om Facebook gerelateerde inhoud te archiveren. [Issue op GitHub #208]


Referentie
Titel Facebook groepen archiveren (Voorkeurstitel)
Locatie
Uitgever
Jaar van uitgave 2020
Rechten CC-BY-SA
Persistent ID


De beschreven methode werkt enkel bij publieke Facebookgroepen.

Op 4 november 2020 stelden we vast dat onderstaande methode via snscrape niet meer werkt. We vermoeden dat Facebook iets gewijzigd heeft aan zijn achterliggende code.

Gebruikte Tools

Voorbereiding

Navigeer naar de Facebook groep en kopieer de naam van de groep zoals die in de adresbalk staat.

Dit kan een series van cijfers zijn of een relevante naam maar staat altijd na het /groups/ gedeelte van de URL.

Facebook groep url.jpg

We hebben de exacte naam of ID van de Facebook groep nodig in de volgende stap.

Installeren snscrape

Snscrape vereist Python 3.6 of hoger.

Python installeren op

De installatie gebeurt via de terminal en pip (de python package manager).

Kopier en plak het volgende commando in de [terminal]. In het geval van windows, gebruik powershell of Command Prompt.

pip3 install snscrape

Of installeer de dev versie:

pip3 install git+https://github.com/JustAnotherArchivist/snscrape.git

URL scrapen met snscrape

Snscrape wordt gebruikt om aan de hand van het facebook groep ID een lijst van URLs te scrapen naar een tekstbestand.

snscrape facebook-group talkgent >/home/jouwgebruikersnaam/snscrape/TALK-Gent.txt
Snscrape gaat starten met het scrapen van URLS, het >/home/jouwgebruikersnaam/snscrape/TALK-Gent.txt gedeelte gaat een tekstbestand maken in de map /home/jouwgebruikersnaam/snscrape/ met TALK-Gent.txt als bestandsnaam.

Ophalen van content

Voor het volgende deel gebruiken wget om de content achter de URLS op te halen. Commando:
wget -i \
/home/jouwgebruikersnaam/snscrape/talk-gent.txt \
--warc-file=talk-gent \
--warc-cdx \
--page-requisites \
--html-extension \
--convert-links \
--execute robots=off \
--user-agent=Mozilla \
- --random-wait \
--wait=2 \

Overlopen van de opties in het wget commando:

  • -i of --input: Lees URL's uit een lokaal of extern bestand, vereist een adres naar het gekozen bestand.
  • --warc-file=talk-gent: Creëer een .warc file om later uit te openen in webrecorder, met naam talk-gent
  • --warc-cdx: Instrueert wget om een bijpassend index bestand te maken voor het talk-gent.warc bestand. Het CDX-bestand bevat een lijst met de records en hun locaties in de WARC-bestanden
  • --page-requisites: Deze optie zorgt ervoor dat Wget alle bestanden downloadt die nodig zijn om een HTML pagina correct weer te geven. Dit omvat zaken als inline afbeeldingen, geluiden en stijlbladen waarnaar wordt verwezen.
  • --html-extension: Deze optie voegt de .html extensie toe waar nodig.
  • --convert-links: Nadat het downloaden is voltooid, converteert wget de links in het document om ze geschikt te maken voor lokaal gebruik. Dit heeft niet alleen invloed op de zichtbare hyperlinks, maar op elk deel van het document waarnaar wordt gelinkt, externe inhoud, zoals ingesloten afbeeldingen, links naar style sheets, hyperlinks naar niet-HTML-inhoud, enzovoort.
  • --execute robots=off: Deze optie instrueert wget de richtlijnen van de robots.txt op de website te negeren. Wget volgt standaard strikt de robots.txt-richtlijnen van een website. In bepaalde situaties kan dit ertoe leiden dat Wget helemaal niets download, wanneer het robots.txt-bestand Wget bijvoorbeeld geen toegang geeft tot de site.
  • --user-agent=Mozilla: Zorgt er voor dat wget zich gaat voor doen als een Mozilla web-browser. Sommige websites weren standaard verzoeken afkomstig van de wget tool.
  • --random-wait: Wacht een willekeurig aantal seconden, tussen de 5s en 10s, voor het volgende verzoek naar de website.
  • --wait=2: Wacht een vast aantal seconden tussen verzoeken naar de website. De laatste twee opties zijn er om te vermijden de server van de website niet overbelast wordt door wget.

Troubleshooting

  • Verwijderen van snscrape

pip3 uninstall snscrape

  • Bij het testen met het commando snscrape --help werd duidelijk dat er problemen waren met de standaard versie van snscrape.

Screenshot van snscrape --help command in command prompt

Oplossing: Installeer de dev versie van snscrape. pip3 install git+https://github.com/JustAnotherArchivist/snscrape.git

  • 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