2010-08-14 5 views
1

Je souhaite obtenir les liens depuis les résultats de la recherche. Quelqu'un peut-il aider s'il vous plaît avec l'expression régulière pour le faire? J'ai cela, et il ne fonctionne pas:Grattage des résultats de recherche Google en PHP

preg_match_all("/<h3(.*)><a href=\"(.*)\"(.*)<\/h3>/", $result, $matches); 
+0

Essayez d'obtenir l'URL pour chacun des résultats de la recherche (pas les mots-clés). – Alex

+1

Vous ne pouvez pas vraiment utiliser les expressions régulières pour l'analyse HTML. Utilisez [l'extension DOM] (http://www.php.net/manual/fr/book.dom.php) ou un autre analyseur DOM. –

+4

Pourquoi avez-vous besoin d'extraire les résultats de recherche quand il y a une API Google qui le rend beaucoup plus facile ?! http://code.google.com/apis/ajaxsearch/web.html – stillstanding

Répondre

5

Vos modèles ont des chances les plus grands problèmes en raison de la nature avide vs paresseux de celui-ci. La modification à ce qui suit devrait résoudre cette question ...

preg_match_all('#<h3.*?><a href="(.*?)".*?</h3>#', $result, $matches); 
print_r($matches[1]); 

Il y a peut-être quelques rares URL qui pourrait gâcher le modèle, mais les chances sont que vous ne rencontrerez pas un. Je ferai remarquer que ce qui reste a un bon point bien que l'utilisation de l'API soit une meilleure option. En ce qui concerne les personnes qui répondent "Vous ne pouvez pas analyser HTML avec Regex, utilisez un DOM" ... Bien que vous ne puissiez pas créer un analyseur HTML générique (vous devriez utiliser DOM pour cette tâche), vous pouvez faire correspondre modèles dans un ensemble de texte que vous connaissez suit une certaine structure, le fait que la structure est HTML est sans importance. Oui, si Google modifie sa mise en page, il se cassera probablement, mais c'est probablement aussi vrai d'un analyseur DOM. (P.S. Je sais bien que cela va probablement tomber - voté par le sheeple).

+1

+1 pour lutter contre les ennemis du regex! Parfois, il est approprié d'utiliser regex sur HTML, si vous n'essayez pas d'analyser complètement le DOM. –

+0

Je t'aime. C'est l'expression rationnelle que je cherchais. Ce serait cool s'il y avait un code qui pourrait avoir le lien suivant. Merci :) – Herr

Questions connexes