Hacer un scraper para capturar información en automático te ayudara a  ahorrar mucho tiempo en la recolección de datos, tu puedes hacer el tuyo para que no dependas de alguien mas y puedas agregarle cosas y si fuera posible compartirlo con la comunidad.

El dia de hoy les compartiré un pequeño pero funcional código hecho en php que te ayudara demasiado a crear tu propio Facebook Business Data Scraper para que empieces ya mismo a recolectar la data de tu nicho.

Por qué deberías tener tu propio scraper de Facebook

Recolectar información sobre un sector en especifico te ayudara a conocer mejor la estrategia que utilizaras para cumplir tus objetivos. Yo por ejemplo, he utilizado el scrap para obtener correos y WhatsApp de perfiles que me interesan aplicando un filtro por palabra clave me ayudara demasiado en hacer un poco de spam 😉


Antes que nada debo aclarar que el script que compartiré en el articulo no contiene un frontend, esa sera tu tarea, básicamente tienes que hacer visual el código y listo lo tendrás corriendo full en la web. Yo lo hice con AngularJS pero tu lo puedes hacer de la manera en que gustes.

Ahora si vamos por lo interesante, primero tenemos que definir la configuración que nuestra app tendrá, para esto te dejo la aplicación.


Crear configuracion.php

En este archivo definiremos la informacion de nuestra aplicacion (necesario para poder hacer correr el script).


Para no dar tanta vuelta al asunto, te dejo el siguiente código que iría en el archivo configuracion.php.

<?php
// ID DE TU APLICACION
define('FACEBOOK_APP_ID', 'XXXXXXXXXXXXXXXXXX');
// SECRET DE TU APLICACION
define('FACEBOOK_APP_SECRET', 'XXXXXXXXXXXXXXXXXXXXXXXX');

Los campos en donde están las X serán sustituidas por la información que se te esta solicitando, puedo estar seguro que ya sabrás como sacar dicha información.


Crear api.php

Este archivo contendrá nuestra conexión al Graph de Facebook y es el que nos permitira hacer las respectivas peticiones a la API de la plataforma.


El funcionamiento es realmente muy sencillo, te pegare el codigo y mas adelante te explicare como funciona.

<?php header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); 
header('Access-Control-Allow-Credentials: true'); 
header("Access-Control-Allow-Headers: *"); 
header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); 
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) 
header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); 
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) 
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); 
error_reporting(E_ALL); 
require 'config.php'; 
$_POST = (array) json_decode(file_get_contents("php://input")); $query = @urlencode(@trim(strip_tags($_POST['query']))); $limit = @trim(strip_tags($_POST['limit'])) OR 20; $type = @trim(strip_tags($_POST['type'])) OR 'page'; $userAccessToken = "&access_token=" . @trim(strip_tags($_POST['accessToken'])) OR null; $accessToken = "&access_token=" . FACEBOOK_APP_ID . "|" . FACEBOOK_APP_SECRET . ""; if ($type != 'page' && $type != 'place') $accessToken = $userAccessToken; $res = ['type' => $type,'data'=>[],'error' => false];
$fields = null;
if($type == 'page'){
    $fields = '&fields=id,name,phone,emails,website,fan_count,link,is_verified,about,picture';
    $res['fields'] = ['ID', 'Name','Phone','Emails','Website', 'Likes'];
    $res['eFields'] = ['ID', 'Name','Phone','Emails','Website', 'Likes','Link','Is Verified','About','Picture'];
}
elseif($type == 'group') {
    $fields = '&fields=id,icon,name,description,email,privacy,cover';
    $res['fields'] = ['ID', 'Name', 'Description','Email','Privacy'];
    $res['eFields'] = ['ID', 'Name', 'Description','Email','Privacy'];
}
elseif($type == 'user') {
    $fields = '&fields=id,name,birthday,bio,email,gender,interested_in,is_verified,link,location,meeting_for,religion,relationship_status,website,work,cover,devices,education,hometown,languages,picture,age_range';
    $res['fields'] = ['ID', 'Name', 'Age Range','Email','Gender','Devices'];
    $res['eFields'] = ['ID', 'Name', 'Birthday','Bio','Email','Gender', 'interested in','is verified','link','location','meeting for','religion','Relationship status','Website','Work','Cover','Devices','Education','Hometown','Languages','Picture', 'Age Range'];
}
elseif($type == 'event') {
    $fields = '&fields=id,name,attending_count,noreply_count,maybe_count,interested_count,declined_count,owner,place,category,can_guests_invite,cover,start_time,end_time,type,ticket_uri';
    $res['fields'] = ['ID', 'Name', 'Attending Count','Place','Owner','Type', 'Time'];
    $res['eFields'] = ['ID', 'Name', 'Attending Count','noreply_count','Place','maybe_count','interested_count','declined_count', 'owner','place','category','can_guests_invite','cover','start_time','end_time','type','ticket_uri'];
}
elseif($type == 'place') {
    $fields = '&fields=id,name,location';
    $res['fields'] = ['ID', 'Name', 'Location', 'Map'];
    $res['eFields'] = ['ID', 'Name', 'Location'];
}

        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/v2.6/search?q=$query&type=$type&limit=$limit" . $accessToken.$fields); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        $output = curl_exec($ch); 
        curl_close($ch);      

$items = json_decode($output);

$res['data'] = $items->data;

echo json_encode($res);

Primeramente establecemos la configuración de los headers del archivo .php.

En segunda, creamos una variable que recogerá desde un array la información enviada desde nuestro frontend por medio de POST aunque también la podemos configurar para que funcione con GET pero la verdad no soy fan de ese método así que lo he hecho con POST jejeje 😀

Posteriormente establecemos con un if de que se trata la petición, yo hice las necesarias aunque puedes configurarlas a tu gusto, las cuales son:

  • Pagina (page)
  • Grupo (group)
  • Usuario (user)
  • Evento (event)
  • Lugar (place)

Al terminar los if establecemos la conexión con el graph de Facebook para realizar la petición, para esto usamos json_decode para obtener la información que nos devuelve la API, posteriormente nos arrojara los resultados en nuestro frontend.

Tu tarea sera conectar el fron con el backend, como lo mencione arriba, yo lo logre gracias a AngularJS y Bootstrap para el CSS de la web pero tu puedes usar lo que mas te convenga, hasta el propio php solo para imprimir los valores que ocupas.

Si no haz podido correr el script con el fron por favor deja tus dudas en los comentarios y con gusto yo te responderé para que tu app corra en cualquier lado, también si requieres mi código fuente con AngularJS con gusto te puedo colaborar para que te des una idea.

Un abrazo virtual! 😛

Obtén beneficios exclusivos

Suscríbete al boletín y obtén beneficios exclusivos directo en tu correo.

Gracias por suscribirte...

Algo salió mal...