Question

Je pensais que ce serait assez simple, mais cela s'avère difficile.Google utilise https:// maintenant et redirections bing pour supprimer HTTP://.

Comment puis-je récupérer les 5 principales URL pour un terme de recherche donné ?

J'ai essayé plusieurs méthodes (y compris le chargement des résultats dans une iframe), mais je continue à frapper des murs de briques avec tout ce que j'essaie.

Je n'aurais même pas besoin d'un proxy, car je parle d'une très petite quantité de résultats à récolter, et je ne l'utiliserai que pendant 20 à 30 termes une fois tous les quelques mois.À peine de quoi déclencher un coup de fouet de la part des géants de la recherche.

Toute aide serait très appréciée!

Voici un exemple de ce que j'ai essayé :

$query = urlencode("test"); 

preg_match_all('/<a title=".*?" href=(.*?)>/', file_get_contents("http://www.bing.com/search?q=" . urlencode($query) ), $matches); 

echo implode("<br>", $matches[1]);
Était-ce utile?

La solution

Il existe trois façons principales de procéder.Tout d’abord, utilisez l’API officielle du moteur de recherche que vous utilisez – Google en a une, et la plupart d’entre eux le feront.Ce sont souvent des volumes limités, mais pour les chiffres dont vous parlez, tout ira bien.

La deuxième façon consiste à utiliser un programme scraper pour visiter la page de recherche, saisir un terme de recherche et soumettre le formulaire associé.Puisque vous avez spécifié PHP, je vous recommande Goutte.En interne, il utilise les composants Guzzle et Symfony, donc ça doit être bon !Le README sur le lien ci-dessus vous montre à quel point c'est simple.La sélection des fragments HTML se fait à l'aide de XPath ou de CSS, elle est donc également flexible.

Enfin, étant donné le faible volume de scrapes requis, envisagez de télécharger un logiciel gratuit à partir de Importer.io.Cela vous permet de créer un scraper à l'aide d'une interface pointer-cliquer, et il apprend à gratter différentes zones de la page avant de stocker les données dans une base de données locale ou cloud.

Autres conseils

Vous pouvez également utiliser un service tiers comme API Serp pour obtenir des résultats Google.

Cela devrait être assez facile à intégrer : :

$query = [
    "q" => "Coffee",
    "google_domain" => "google.com",
];

$serp = new GoogleSearchResults();
$json_results = $serp.json($query);

Projet GitHub.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top