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]