2010-09-25 7 views
1

J'essaie d'obtenir Google Résultats html pour le terme de rechercheGet Google Résultats PHP

intitle:index.of ”last modified” ”parent directory” (mp3|wma|ogg) "test" -htm -html -php -asp 

utilise file_get_contents

donc quelque chose comme ceci:

$file = file_get_html("http://www.google.com/search?q=intitle:index.of%20%20%94last%20modified%94%20%20%94parent%20directory%94%20%20%28mp3|wma|ogg%29%20%20%22test%22%20-htm%20-html%20-php%20-asp"); 

(essentiellement c'est le terme de recherche:

http://www.google.com/search?q=intitle:index.of ”last modified” ”parent directory” (mp3|wma|ogg) "test" -htm -html -php -asp 

)

et son faire un 503

quelqu'un sait comment je peux obtenir ce travail?

Merci

Répondre

5

Grattage est against Google's TOS (lire 5.3). Vous devez utiliser leur API:

http://code.google.com/apis/ajaxsearch/documentation/

Il y a des exemples sur la façon de l'utiliser en PHP. L'utilisation de l'API renvoie également un objet structuré (JSON) de sorte que vous économiserez des ressources avec la puissance du processeur (analyse syntaxique) et la bande passante (JSON ne contient que des données).

+0

L'API Google Web Search a été officiellement abandonnée (donc seules les demandes limitées sont autorisées) à compter du 1er novembre 2010. La nouvelle API peut être consultée à l'adresse https://developers.google.com/custom-search/v1/overview – krishna

-2

L'API de recherche est obsolète. Vous devez analyser le code html avec cette expression rationnelle:

/url \ q = ([^ <> & « ] *) &

Veillez à ne pas "Google spam", limiter le nombre de vos questions? , utiliser un grand nombre de procurations, simuler le comportement humain ...

+0

Je ne fais que répondre à la question. La "réponse" marquée n'est pas une réponse, c'est plutôt "ne fais pas ça" mais ne répond pas à la question ... de toute façon ... –

0

La question est un peu vieillot mais je vais donner encore un coup de feu que les réponses ne sont pas terrible.

tout d'abord, en utilisant file_get_contents() ne va pas travailler avec Google
Google wil Je rejette votre requête (et il l'a fait :-)

Comme les réponses sélectionnées l'ont dit correctement, leur TOS dit que vous n'êtes pas autorisé à y accéder automatiquement. Ils défendent leur service contre cela.
Cependant, il est de votre décision d'ignorer les conditions d'utilisation non-grattantes d'une entreprise de grattage-méga-entreprise, aussi c'est votre décision d'accepter réellement les TOS d'une manière contraignante.

Cela dit, il y a plusieurs possibilités de poursuivre:

Si vous avez un très faible volume de demandes que vous pouvez utiliser votre connexion Internet normale (sans proxy, etc.), mais vous devez faire votre demande un peu plus intelligent. Regardez dans "curl" pour PHP, il est probablement déjà installé.
Définissez l'agent utilisateur sur quelque chose comme ceci: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

Cela fera penser à Google que vous êtes un navigateur Chrome, pas un script PHP. A partir de là, vous pouvez utiliser DOM ou regex ou des moyens similaires pour continuer à analyser le contenu HTML.
Le problème ici sera que Google modifie régulièrement le code source html et la logique de détection, ce qui se produit tous les quelques mois à un an.

Jetez un oeil au code source et des informations ici: http://google-scraper.squabbel.com

Vous trouverez des routines d'analyse syntaxique PHP open source et le code boucle avec un agent utilisateur, devrait vous aider à démarrer rapidement.

Si vous avez besoin de récurer de grandes quantités de résultats, vous aurez besoin d'un peu plus d'action, il suffit de commenter ici si vous avez besoin d'aide.