Extraire les 100 premiers liens des SERP Google

Extraire les 100 premiers liens des SERP GoogleIl est devenu très difficile de scrapper, d’extraire le contenu -si vous préférez – des pages de résultats du moteur de recherche Google. En anglais, on parle d’ailleurs de SERP, pour Search Engine Results Page. Il m’a fallu trouver un stratagème et, du coup, je suis passé par Startpage dont les résultats sont ceux retournés par Google. Cet excellent moteur de recherche a comme limite de ne pas comprendre les opérateurs de recherche avancés  et fort utiles comme (all)inanchor, (all)intext, (all)inurl, link, related, site notamment.

Récupérer le contenu d’un page

En PHP, comme dans bien d’autres langages de programmation, nous disposons d’un module CURL et d’instructions pour effectuer toute sorte de requête. L’un des principaux intérêts de CURL, c’est de nous permettre d’être extrêmement discrets.

La fonction ci-dessous a pour objet de récupérer le contenu d’une page à partir de son adresse. Elle retourne une chaîne de caractères qui représente le code HTML de la page.

    function curl($url)
    {
        $ua='Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:42.0) Gecko/20100101 Firefox/42.0';
        $html='';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_USERAGENT,$ua);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $headers=Array(
          'Accept: text/plain',
          'Accept-Charset: utf-8',
          'Accept-Encoding: compress; gzip; deflate',
          'Accept-Language: fr-FR',
          'Cache-Control: no-cache',
          'Content-Type: text/plain',
          'Pragma: no-cache',
          'Referer: ',
          'User-Agent: '.$ua
        );
        curl_setopt( $ch, CURLOPT_HTTPHEADER,$headers);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_ENCODING, 'gzip,deflate');
        if(!curl_errno($ch))
        {
            $html=curl_exec($ch);
            curl_close($ch);
        }            
        return $html;
    }

Elle s’emploie comme suit :

$html=curl('https://www.dsfc.net/');

La fonction de Web Scraping

La 2e fonction a pour objet d’extraire les 100 1ers liens de la page de résultat du moteur Startpage. Utilisant les expressions régulières au travers de la fonction preg_match_all, elle utilise la fonction précédente et renvoie un tableau de liens.

    function scrap_google_serp($query)
    {
        if(preg_match_all("@<h3 class='clk'><a href='(https?://[^']+)'@isu",curl('https://startpage.com/do/search?lui=francais&language=francais&cat=web&query='.$query.'&prfh=num_of_resultsEEE100N1N'),$matches, PREG_PATTERN_ORDER))
        {
            return($matches[1]);
        }
    }

Là-encore, elle s’emploie très simplement. Le tableau $urls, dans l’exemple ci-dessous, contient  toute la liste des liens :

    $urls=scrap_google_serp('seo');
    print_r($urls);

Extraire les titres et les mots-clés des pages des urls collectées

Si vous êtes sage, je vous montrerai la suite dès demain ! ;+)

Php  / Consultant SEO cURL Expressions rationnelles Expressions régulières Formateur Expressions régulières Formateur PHP Formateur Scraping Formateur Web Scraping php Scraping Scrapping SERP Startpage 

Commentaires

Faut lire la suite. ;+)

Laisser un commentaire

(requis)

(requis)