Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Scrapen van Facebook pagina (PHP/JavaScript)

Pagina: 1
Acties:

  • MastersInstinct
  • Registratie: Juni 2003
  • Laatst online: 16-11 18:51
Voor mijn afstuderen ben ik bezig met een onderzoek. Als data hiervoor wil ik graag de Pietitie pagina van Facebook gebruiken: https://facebook.com/pietitie.
Deze data wil ik vervolgens coderen in (voorkeur) excel.

Zelf ben ik al een lange tijd op zoek om deze data via een geautomatiseerde manier op te slaan. Helaas tot nu toe zonder succes. Dingen die ik al heb geprobeerd:

1) Pietitie vragen of ze mij (via plug-ins) een export kunnen maken. Helaas ontvang ik hierop geen reactie.
2) Handmatig alle reactie openen en dan de pagina opslaan in PDF (safari). Deze PDF heb ik dus, maar dat is niet anders dan een html pagina. Schiet ik buiten het bewaren van de oorspronkelijke data niet veel mee op.
3) Oude scraping software geprobeerd. Helaas is Facebook dermate veranderd (layout en manier van reactie wel/niet tonen) dat dit voor mij niet werkend te krijgen is.
4) Google, Google en Google. Helaas geen bruikbare resultaten.

Heb zelf redelijke PHP kennis en een kleine kennis van JavaScript. Helaas ligt hier het zwaartepunt op JavaScript.

Heeft iemand hier onlangs iets mee gedaan (studie/onderzoek/interesse) en kan mij in de goede richting wijzen/helpen? Zou er erg gebaat mee zijn, want loop vast hierop.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

De reden dat er geen nieuwe scraping software is, is dat Facebook gewoon een API heeft tegenwoordig. Heb je daar tijdens als dat Google, Google, Google niets over gevonden?

[ Voor 9% gewijzigd door NMe op 10-07-2014 16:05 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MastersInstinct
  • Registratie: Juni 2003
  • Laatst online: 16-11 18:51
Hi NMe, doel je op de Facebook open Graph? Dit werkt alleen als je beheerder bent van een pagina. Daar reacties op Facebook niet zomaar zichtbaar zijn maar uitgeklapt moeten worden kan je niet zomaar html scrapen. Overigens kan dat niet zomaar, want Facebook detecteert de header en blokkeert de requests.
Er zijn veel soortgelijke vragen te vinden, maar geen heeft bruikbare antwoorden. Dus als jij iets gevonden hebt, dan hoor ik het graag. Ben al uren/dagen bezig geweest hiermee.

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 21-11 20:07

Cyphax

Moderator LNX
Ik denk dat NMe doelt op de API van PHP en dan kom je uit bij bijvoorbeeld:
http://www.php.net/manual/en/domdocument.loadhtml.php

Als de pagina die je wilt scrapen in een DOMDocument laadt, dan kan je met DOM-functies (die je vanuit je Javascriptkennis wel zult (her)kennen) de pagina doorlopen.

Je moet alleen hopen dat niet alles asynchroon wordt ingeladen. :X

[ Voor 10% gewijzigd door Cyphax op 13-05-2014 10:19 ]

Saved by the buoyancy of citrus


  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
In principe is alles wat voor iedereen zichtbaar is op de Facebook website (dus niet met een beperkte groep gedeeld) ook door iedereen via de Graph API op te vragen.

Probeer het maar eens via https://developers.facebook.com/tools/explorer/
Voor de Pietitie posts en reacties vul je bijv. in:
GET /v2.0/pietitie/posts?limit=5

Let op: de meeste posts op die pagina hebben zoveel reacties dat je ze niet in een keer teruggegeven worden door de Graph API. Je moet dan onder "comments" kijken in het blokje "paging" voor de next link om door de overige reacties op de post binnen te halen.

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
Ik denk dat hij wel de Opengraph API bedoeld. Je hebt wel de /page/feed api, daarmee krijg je ook berichten enzo toch? En er is ook de /object/likes api.
Durf zo niet te zeggen wat precies objects/pages enzo zijn, maar ik zou zeggen, loop de API lijst na en kijk wat je allemaal terug kan krijgen/aan elkaar kan koppelen.

Evt. heb je nog Goutte om te scrapen, maar dat is bij een complexe site als Facebook denk ik wel lastig..

[ Voor 5% gewijzigd door Barryvdh op 13-05-2014 10:31 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

MastersInstinct schreef op dinsdag 13 mei 2014 @ 09:58:
Hi NMe, doel je op de Facebook open Graph? Dit werkt alleen als je beheerder bent van een pagina.
Als jij een post mag zien dan mag je de post opvragen via de API...
Permissions
The same permissions required to view the parent object are required to view comments on that object.
Permissions
Any valid access token if the post is public
A user access token with read_stream permission for any other posts.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MastersInstinct
  • Registratie: Juni 2003
  • Laatst online: 16-11 18:51
Geprobeerd maar ik (en overige hulp) komen er niet uit.

Daarom staat er nu een klus open in Vraag en Aanbod. Zie: V&A gevraagd: Export van Facebook pagina

  • Cartman!
  • Registratie: April 2000
  • Niet online
Wat lukt er dan precies niet? Voor 20 euro komt er geen goede developer op af ga ik vanuit ook ;)

Verwijderd

MastersInstinct schreef op maandag 12 mei 2014 @ 19:07:

2) Handmatig alle reactie openen en dan de pagina opslaan in PDF (safari). Deze PDF heb ik dus, maar dat is niet anders dan een html pagina. Schiet ik buiten het bewaren van de oorspronkelijke data niet veel mee op.
Als je de volledige HTML hebt is het verder toch vrij simpel?

Ik heb er nu maar een paar minuten naar gekeken maar met wat simpele JavaScript heb je al een hele hoop.
JavaScript:
1
document.getElementsByClassName('livetimestamp');

Hiermee krijg je dus o.a. de datum, tijd, de id van de comment en de id van de comment waarop het een reactie is.
HTML:
1
<abbr class="livetimestamp" title="zondag 13 juli 2014 om 13:43" data-utime="1405284206" data-reactid=".16.1:3:1:$replies726020044112492_726023657445464:0.1:2:$comment726020044112492_729059967141833:0.0.$right.0.$left.0.3.$metadata:0.$timestamp-message.0">13 uur geleden</abbr>

Gegevens die je nodig hebt hieruit filteren dmv reguliere expressie of iets dergelijks en hoppa.

Heb zelf vrij weinig ervaring met scrapen (enige wat ik ooit gescraped heb is Appie), maar ik zou denken dat het met een aantal loops wel moet lukken (jquery zou het makkelijker maken). Resultaten wegschrijven naar een database en exporteren naar Excel (misschien is dit een omweg en kan het makkelijker).

Maar misschien begrijp ik iets verkeerd, gaat dit nooit werken of onderschat ik je nu.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-11 09:49

Bosmonster

*zucht*

Waarom zou je scrapen als je een API tot je beschikking hebt?
Pagina: 1