Scraper Google facilement… on en rêve tous. Il existe aujourd’hui pas mal d’outils mais il faut toujours sortir un petit sous du porte-monnaie pour avoir un truc sympa. Voici une solution rapide et gratuite:
Première chose à penser… qu’est ce que je veux récupérer ?
Pour mes besoins personnels, je voulais les urls des résultats, les ancres et la racine de chacune des urls présentes.
Je ne veux pas devoir charger toutes les pages des « search ».
Voilà la contrainte…
Donc premièrement, je télécharge un plugin qui permet de scroller sur les résultats Google à l’infini (en fait jusqu’à ce qu’un bug apparaisse). Pour ça j’utilise Ginfinity, un plugin chrome très sympa pour éviter de naviguer de page en page.
Je peux donc charger les 10 pages en une seule.
Alors je me rends sur la home de Google, je clique sur paramètres:
Je selectionne « Paramètres de recherche« , le premier onglet
Et dans Résultats par page, je mets à 100.
J’enregistre tout en bas.
Je fais un test, ça m’affiche 100 premiers résultats, je scrolle jusqu’en bas, ça me charge la page 2 et ainsi de suite.
Je me retrouve rapidement avec 1000 résultats sur une seule page.
Il me reste juste à récupérer tout ça…
Bien entendu, PHP ne va pas me permettre de scroller et ça demande un peu plus de code. Je voulais juste un petit bookmarklet dans ma barre de navigateur qui me fasse ça.
Et hop (code modifié de chrisains.com):
Ce qui me donne ce petit raccourci à créer dans votre barre:
javascript: (function() { function extractHostname(url) { var hostname; if (url.indexOf("://") > -1) { hostname = url.split('/')[2]; } else { hostname = url.split('/')[0]; } hostname = hostname.split(':')[0]; hostname = hostname.split('?')[0]; return hostname; } output = '<html><head><title>SEO: Urls Google</title><style type=\'text/css\'>body,table{font-family:Tahoma,Verdana,Segoe,sans-serif;font-size:11px;color:#000}h1,h2,th{color:#405850}th{text-align:left}h2{font-size:11px;margin-bottom:3px}</style></head><body>'; pageAnchors = document.getElementsByTagName('a'); divClasses = document.getElementsByTagName('div'); var linkcount = 0; var linkLocation = ''; var linkAnchorText = ''; var formated_links = ''; output += '<table><th>ID</th><th>Lien</th><th>Ancre</th>'; for (i = 0; i < pageAnchors.length; i++) { if (pageAnchors[i].parentNode.parentNode.getAttribute('class') != '_Rm') { var anchorText = pageAnchors[i].textContent; var anchorLink = pageAnchors[i].href; var linkAnchor = anchorLink + '\t' + anchorText; var anchorID = pageAnchors[i].id; if (anchorLink != '') { if (anchorLink.match(/^((?!google\.|cache|blogger.com|\.yahoo\.|youtube\.com\/\?gl=|youtube\.com\/results|javascript:|api\.technorati\.com|botw\.org\/search|del\.icio\.us\/url\/check|digg\.com\/search|search\.twitter\.com\/search|search\.yahoo\.com\/search|siteanalytics\.compete\.com|tools\.seobook\.com\/general\/keyword\/suggestions|web\.archive\.org\/web\/|whois\.domaintools\.com|www\.alexa\.com\/data\/details\/main|www\.bloglines\.com\/search|www\.majesticseo\.com\/search\.php|www\.semrush\.com\/info\/|www\.semrush\.com\/search\.php|www\.stumbleupon\.com\/url|wikipedia.org\/wiki\/Special:Search).)*$/i)) { if (anchorID.match(/^((?!hdtb_more|hdtb_tls|uh_hl).)*$/i)) { linkLocation += anchorLink + '<br/>'; formated_links += extractHostname(anchorLink) + '<br/>'; linkAnchorText += anchorText + '<br/>'; linkcount++; if (anchorText === undefined) anchorText = pageAnchors[i].innerText; output += '<tr>'; output += '<td>' + linkcount + '</td>'; output += '<td>' + pageAnchors[i].href + '</a></td>'; output += '<td>' + anchorText + '</td>'; output += '</tr>\n'; } } } } } output += '</table><br/><h2>Liste format%C3%A9e</h2><div>'; output += linkLocation; output += '</div><br/><h2>Ancres format%C3%A9es</h2><div>'; output += linkAnchorText; output += '</div><br/><h2>Liens format%C3%A9s</h2><div>'; output += formated_links; output += '<br/><br/><p align=center><a href="https://jeremy-allard.com">www.jeremy-allard.com</a></p>'; with(window.open()) { document.write(output); document.close(); } })();
Je vous aurais bien laissé un lien direct à glisser dans votre barre mais le site est sécurisé et n’accepte donc pas trop le JS dans l’article.
Je vous laisse apprécier le résultat sympathique. Si quelqu’un a envie d’y ajouter un traitement des doublons ;)
Bon scraping
Jérémy