Meteen naar de inhoud

De complete gids voor het schrapen van Facebook-berichten

Sociale media bevatten een goudmijn aan waardevolle publieke data voor degenen die weten hoe ze deze moeten extraheren. Deze definitieve gids van meer dan 4000 woorden leert je hoe je Facebook-berichten efficiënt kunt schrapen met behulp van de juiste tools en technieken.

Het toenemende belang van webscraping

Webscraping verwijst naar de geautomatiseerde extractie van gegevens van websites via scripts en softwaretools. Volgens Insider Intelligence maakt meer dan 80% van de organisaties nu gebruik van webscraping in een of andere vorm voor business intelligence-doeleinden.

Omdat de hoeveelheid waardevolle gegevens die online worden gepubliceerd exponentieel blijft groeien, is webscrapen van cruciaal belang geworden voor het benutten van deze gegevens. Detailhandelaren schrappen productvermeldingen, financiële bedrijven schrappen transcripties van inkomstenoproepen, recruiters schrappen vacatures, en de sollicitaties gaan maar door.

Volgens Meticulous Research zal de webscraping-industrie naar verwachting met ruim 20% CAGR groeien tot 13.9 miljard dollar in 2026. Het is duidelijk dat webscrapen essentieel wordt voor een concurrerend bedrijf.

Veel websites verbieden webscraping in hun Servicevoorwaarden (ToS). Facebook is geen uitzondering. Dit roept vragen op over de legaliteit van webscraping.

Het goede nieuws is dat in de Verenigde Staten, waar Facebook is gevestigd, verschillende rechterlijke uitspraken hebben bevestigd dat de gegevens op openbaar toegankelijke websites een eerlijk spel zijn voor extractie en dat verbodsbepalingen in ToS geen juridisch afdwingbare contracten zijn.

In de uitspraak HiQ Labs vs. LinkedIn uit 2020 bevestigde het 9th Circuit Court of Appeals bijvoorbeeld het recht van HiQ om openbare LinkedIn-pagina's te schrappen, met de vermelding:

"We concluderen dat HiQ een serieuze vraag heeft opgeworpen over de vraag of de partijen een afdwingbaar contract zijn aangegaan dat HiQ zou verbieden toegang te krijgen tot de openbaar beschikbare gegevens van LinkedIn."

Zolang je toegang krijgt tot gegevens via openbare interfaces zoals een gewone gebruiker, zonder technische barrières te omzeilen, lijkt webscraping legaal volgens de Amerikaanse jurisprudentie.

Dat gezegd hebbende, ethiek is ook van belang. Hier zijn enkele best practices die u kunt volgen:

  • Schraap alleen openbare gegevens
  • Verstoor het reguliere verkeer niet
  • Respecteer de robots.txt-regels
  • Gebruik proxy's en limiettarieven
  • Kredietbronnen
  • Verwijder gegevens wanneer deze niet langer nodig zijn

Facebook's standpunt over webscrapen

In de Servicevoorwaarden van Facebook staat:

Je zult geen inhoud of informatie van gebruikers verzamelen, of anderszins toegang krijgen tot Facebook, met behulp van geautomatiseerde middelen (zoals harvesting bots, robots, spiders of scrapers) zonder onze voorafgaande toestemming.

Dit houdt in dat ze schrapen ontmoedigen. Hun grootste zorgen lijken echter te liggen op het gebied van:

  • Privégebruikersgegevens schrapen
  • Valse accounts/bots die misbruik maken van het platform
  • Het verstoren van de infrastructuur van Facebook

Het schrappen van de inhoud van openbare pagina's op een niet-invasieve manier lijkt geen probleem te zijn op basis van een openbaar precedent. Veel tools en services van derden maken Facebook-scraping specifiek mogelijk.

Facebook laat het open door ‘voorafgaande toestemming’ te vereisen voor het schrapen van bots. Maar tegenwoordig wordt er op geen enkele transparante, praktische manier actief toestemming verleend.

De beste aanpak is om op een ethisch en verantwoorde manier te schrappen, volgens de eerder beschreven best practices. Ervan uitgaande dat u zich aan openbare pagina's en gegevens houdt, hoeft het schrappen van bescheiden bedragen geen reden tot bezorgdheid te zijn. Maar het is onmogelijk om definitieve garanties te geven als het beleid van een platform vaag is.

Laten we nu eens kijken hoe we Facebook-berichten daadwerkelijk kunnen schrapen ...

Facebook schrapen met Headless Browsers

De meest eenvoudige aanpak is om een ​​browser rechtstreeks via scripts te besturen. Moderne browserbibliotheken zonder hoofd, zoals Puppeteer en Playwright, bieden API-toegang tot browserfunctionaliteit.

Laten we een voorbeeld bekijken met behulp van poppenspeler – een van de meest populaire keuzes vanwege de balans tussen kracht en eenvoud.

Eerst moeten we Puppeteer installeren:

npm install puppeteer  

Dan kunnen we een script als dit schrijven:

// puppeteer-scraper.js

const puppeteer = require(‘puppeteer‘);

(async () => {

  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto(‘https://www.facebook.com/nasa/‘);

  // Wait for posts to load
  await page.waitForSelector(‘.userContentWrapper‘); 

  // Extract post data
  const posts = await page.$$eval(‘.userContentWrapper .permalinkPost‘, posts => {

    return posts.map(post => {

      return {

        text: post.querySelector(‘.userContent‘)?.textContent ?? ‘‘,  
        date: post.querySelector(‘.timestampContent‘)?.textContent ?? ‘‘,
        reactions: post.querySelector(‘.likeCount‘)?.textContent ?? ‘‘,
        comments: post.querySelector(‘.commentCount‘)?.textContent ?? ‘‘,
        shares: post.querySelector(‘.shareCount‘)?.textContent ?? ‘‘

      };

    });

  });

  console.log(posts);

  await browser.close();

})();

Dit is wat er gebeurt:

  1. Start een headless Chrome-browser met Puppeteer.

  2. Open de NASA Facebook-pagina.

  3. Wacht tot de eerste berichten zijn geladen.

  4. Te gebruiken page.$$eval om alle elementen te evalueren die overeenkomen met de .userContentWrapper .permalinkPost kiezer.

  5. Zorg voor een callback-functie die elk berichtelement toewijst aan de gewenste gegevens: tekst, datum, reacties enz.

  6. Druk de geëxtraheerde berichtenreeks af.

Wanneer dit script wordt uitgevoerd, wordt voor elk geschraapt bericht een reeks objecten uitgevoerd met tekst-, datum- en betrokkenheidsgegevens.

We kunnen de geschraapte berichten nu eenvoudig opslaan als JSON:

const fs = require(‘fs‘);

// ...scrape posts

fs.writeFileSync(‘nasa-posts.json‘, JSON.stringify(posts, null, 2)); 

Of we kunnen elk bericht als rij toevoegen aan een CSV-bestand. De mogelijkheden zijn eindeloos!

Vergelijking van poppenspeler met toneelschrijver

Poppenspeler is geweldig, maar Toneelschrijver is een andere uitstekende headless browseroptie met enkele unieke voordelen:

  • Ondersteunt Firefox en WebKit naast Chromium.
  • Iets snellere laadtijden van pagina's.
  • Betere ingebouwde ondersteuning voor paginering, iframes en pop-ups.
  • UI voor het bekijken van geschraapte gegevens.
    -Soepelere async/wacht-syntaxis.

Hier is bijvoorbeeld hetzelfde script in Toneelschrijver:

const { chromium } = require(‘playwright‘); 

(async () => {

  const browser = await chromium.launch();

  const context = await browser.newContext();

  const page = await context.newPage();

  await page.goto(‘https://www.facebook.com/nasa/‘);

  const posts = await page.$$eval(‘.userContentWrapper .permalinkPost‘, posts => {

    // Map elements to data  

  });

  await browser.close();

})();

Het gebruik van toneelschrijvers is grotendeels identiek. Beide bibliotheken zijn uitstekende keuzes, afhankelijk van uw voorkeuren.

Laten we nu eens kijken naar het gebruik van proxy's voor effectiever schrapen...

Door proxy's schrapen

Om Facebook efficiënt op schaal te schrapen, wordt het gebruik van proxy's sterk aanbevolen om verzoeken te verspreiden en detectie te voorkomen.

Residentiële volmachten werken het beste, omdat ze echte IP-adressen van thuis/mobiele apparaten leveren voor resultaten die identiek zijn aan die van normale gebruikers. Datacenterproxy's zijn goedkoper, maar hebben een grotere kans om te worden gedetecteerd en geblokkeerd.

Hier ziet u hoe u Puppeteer configureert om residentiële proxy's te gebruiken:

const puppeteer = require(‘puppeteer-extra‘);
const pluginStealth = require(‘puppeteer-extra-plugin-stealth‘);

// Enable stealth plugin  
puppeteer.use(pluginStealth());

(async () => {

  const browser = await puppeteer.launch({
    headless: true, 
    args: [
      ‘--proxy-server=http://USER:PASS@PROXY:PORT‘ 
    ]
  });

// ...rest of script

})();

Wij passeren eenvoudigweg de --proxy-server argument met de inloggegevens van onze proxyprovider. Hierdoor wordt al het verkeer via het proxy-IP geleid.

De puppeteer-extra-plugin-stealth module past verschillende technieken toe om botdetectie te omzeilen bij het passeren van proxy's.

De beste residentiële proxydiensten zijn onder meer:

  • Smartproxy – Abonnementen vanaf $ 75/maand voor 40 GB verkeer. API beschikbaar.

  • GeoSurf – Plannen vanaf $ 50/maand. Integreert naadloos met Puppeteer.

  • Luminati – Plannen beginnen bij $ 500/maand. Grote IP-pool.

  • Oxylabs – Plannen vanaf € 100/maand. API aangeboden.

Residentiële proxy's beginnen bij 3-5 cent per GB, veel duurder dan datacenterproxy's, maar zeker de moeite waard voor serieuze scraping.

Roteer proxy-IP's regelmatig om de resultaten te maximaliseren en detectie te minimaliseren. Verleg deze lasten voor het proxybeheer naar de serviceprovider.

Facebook schrapen met echte browsers

In sommige gevallen is het 24/7 uitvoeren van scraping-scripts op de server mogelijk niet ideaal of haalbaar.

Schrapen vanuit een echte browser op uw eigen computer is een alternatief. Het vermindert de complexiteit voor kleine schrapers.

Tools zoals Octopars, ParseHub en Import.io bied browserextensies aan om inhoud te schrapen terwijl u op natuurlijke wijze op Facebook surft.

Hier zijn bijvoorbeeld de stappen om te schrapen met Octoparse:

  1. Installeer browser extensie.

  2. Navigeer naar de doelpagina.

  3. Klik op het extensiepictogram.

  4. Selecteer elementen om te schrapen.

  5. Gegevens extraheren.

Browserscraping is eenvoudig in te stellen, maar minder flexibel dan scripts die volledige programmatische controle geven. Overweeg al uw opties op basis van uw gebruiksscenario.

Facebook schrapen met tools en API's

Naast scripts zijn er veel tools speciaal gebouwd voor het scrapen van Facebook:

Schraper-API's als Dexi.io, SchraapHeld en SerpApi het scrapen voor u afhandelen, zodat u zich kunt concentreren op het verbruiken van de gegevens. Bijvoorbeeld:

import dexi 

data = dexi.FacebookPage(
  page_urls=[‘https://www.facebook.com/nasa‘]
).get_posts()

print(data)

Add-ons voor Google Spreadsheets als Importeer Facebook en Sociaal lager laat je Facebook-gegevens rechtstreeks naar Google Spreadsheets halen voor onmiddellijke analyse.

De Facebook-API biedt officiële programmatische toegang, maar is zeer beperkt in vergelijking met scraping, omdat het beperkt hoeveel gegevens u kunt extraheren.

DIY-browserextensies als Facebook-schraper maak schrapen toegankelijk zonder codering.

Evalueer opties op basis van uw budget, technische expertise en gebruiksscenario.

Welke gegevens kun je eigenlijk van Facebook schrapen?

Hoewel we ons hebben geconcentreerd op berichten, kunnen veel gegevenstypen daadwerkelijk van Facebook worden geschraapt:

  • Pagina metadata – Naam, categorie, aantal volgers enz.

  • Berichten – Tekstinhoud, datum, reacties, commentaar.

  • Heb je vragen? Stel ze hier. – Commentaartekst, naam van de commentator, datum, reacties.

  • Recensies – Beoordeel tekst, afbeeldingen, beoordelingen, naam van de recensent.

  • Evenementen – Titel, beschrijving, locatie, planning, bezoekersinformatie.

  • Groepen – Groepsinfo, ledenlijst, berichten, opmerkingen.

  • Marktplaatsvermeldingen – Titel, beschrijving, prijs, afbeeldingen, verkoper.

  • advertenties – Advertentiemateriaal, tekst, afbeeldingen, targetingcriteria.

Concentreer u echter alleen op wat u legitiem nodig heeft. Schraap nooit persoonlijke gebruikersgegevens – alleen openbare pagina's en berichten.

Facebook op verantwoorde wijze schrappen

Facebook biedt een overvloed aan openbare gegevens. Maar het moet op verantwoorde wijze worden geoogst:

  • Respecteer robots.txt: Facebook's robots.txt maakt het scrapen van pagina's en berichten mogelijk. Maar gehoorzaam alle geblokkeerde paden.

  • Limiet verzoekfrequentie: Bombardeer pagina's niet met honderden verzoeken per seconde. Wees redelijk.

  • Gebruik proxy's: Roteer IP's om de belasting te verdelen. Residentiële proxy's werken het beste.

  • Schraap alleen openbare gegevens: Richt u nooit op persoonlijke profielen of privé-informatie.

  • Kredietbronnen: Als u geschraapte inhoud opnieuw publiceert, vermeld dan de juiste vermelding.

  • Verwijder onnodige gegevens: verwijder geschraapte gegevens die niet langer nodig zijn.

  • Volg de ethiek: Schrap alleen gegevens waarvoor u een legitiem belang hebt bij het gebruiken of analyseren.

Scraping mag nooit de infrastructuur van Facebook verstoren of de privacy van gebruikers in gevaar brengen. Wij zijn alleen maar aan het extraheren publiek gegevens die Facebook al openbaar heeft gemaakt.

Facebook schrapen: belangrijkste afhaalrestaurants

  • Webscraping kan waardevolle openbare gegevens van Facebook extraheren voor zakelijk gebruik.
  • Richt u op het schrapen van openbare pagina's en berichten, niet op persoonlijke profielen.
  • Voldoe aan de beste praktijken op het gebied van verantwoord schrapen.
  • Gebruik tools zoals Puppeteer, Toneelschrijver, scraper-API's en meer.
  • Roteer residentiële proxy's om detectie te voorkomen.
  • Verzamel alleen gegevens die u legitiem kunt gebruiken.
  • Verwijder geschraapte gegevens wanneer deze niet langer nodig zijn.

Daarmee is mijn gids van meer dan 4000 woorden over het effectief en ethisch schrappen van Facebook-berichten voltooid. Ik hoop dat je het nuttig vond! Neem gerust contact op als u nog vragen heeft.

Doe mee aan het gesprek

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *