Saltar al contenido
Codifíca.me | Desarrollo web | Programación
SEO

Scraping Google SERP con PHP

18 mayo, 2015

En esta entrada vamos a Scrapear los resultados de Google utilizando PHP desde diferentes navegadores.

¿Cómo lo vamos a hacer?

Fácil, vamos a utilizar diferentes user-agent para rebuscar en los resultados de búsqueda de Google lo que nos interesa, así podremos ver en que posiciones está una página web para los diferentes navegadores, o para móviles o para tablets, o cualquier combinación entre ellos.

¿Qué necesitamos?

Necesitamos dos una librería que nos ayudará con esto.

La primera es simple_html_dom, la podéis encontrar en sourceForge o en Github, con una búsqueda os valdrá para localizarla y descargarla.

Esto no hace falta, me he adelantado a la segunda parte, utilizando curl y simple_html_dom 🙂 🙂
La segunda es random_user_agent, es una colección o lista de user agent que podrémos utilizar para realizar las búsquedas en Google.
La tenéis en git hub, random user agent collection


En esta linea es dónde la utilizamos y cambiamos el userAgent cada vez que realizamos una búsqueda.


curl_setopt( $ch, CURLOPT_USERAGENT, $userAgents );

Esta es la búsqueda que haremos en el buscador, debéis de modificarla a vuestro gusto.

$url =’https://www.google.es/search?num=100&espv=2&q=codifica.me+web&oq=codifica.me+web’;

Tiene dos keywords , la primera es codifica.me y la segunda es web. Qué corresponden a esta parte del código
q=codifica.me+web&oq=codifica.me+web

Esta parte hará que Google nos devuelva 100 resultados
num=100

Así mostrará una búsqueda después de Scrapear los resultados.
scraping google

Y este es el código. Te lo cambio por una acción social . Gracias 🙂

[sociallocker]

 
require_once('simple_html_dom.php');
 
 
$url ='https://www.google.es/search?num=100&espv=2&q=codifica.me+web&oq=codifica.me+web';
 
 
 
$html = file_get_html($url);
 
$linkObjs = $html->find('h3.r a');
 
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
 
foreach ($linkObjs as $linkObj) {
    $title = trim($linkObj->plaintext);
    $link  = trim($linkObj->href);
    $Googlelink  = $link;
 
    if (!preg_match('/^https?/', $link) && preg_match('/q=(.+)&amp;sa=/U', $link, $matches) && preg_match('/^https?/', $matches[1])) {
        $link = $matches[1];
    } else if (!preg_match('/^https?/', $link)) { 
        continue;    
    }
 
    $google ='https://www.google.es';
 
    echo '<p><b>Titulo:</b> ' . $title . '<br />';
    echo '<b>Link: </b>' . $link . '<br/>';  
    echo '<b>Enlace Google</b>: '. $google . $Googlelink . '</p>';  
 
 
}
 
?>
</br>
</body>
</html>

[/sociallocker]