2010-12-06 6 views
0

Je veux obtenir 'titre', '' description'and'keywords dans une page web Je sais que 3 façons de mettre en œuvre ce travail:comment obtenir du contenu d'une page Web externe par php?

a) CURL

b) utiliser fopen

c) utiliser get_meta_data()

Étrangement, chacun des éléments ci-dessus ne fonctionne pas correctement à chaque fois.

pour la même URL:

Parfois, je peux obtenir le contenu.

Parfois, il retourne une erreur: 'failed to open stream: requête HTTP échoué'

Je suis confused.WHY? aidez-moi:)

+1

obtenez-vous la même erreur pour tous les liens ou seulement pour un seul lien –

+0

* (connexes) * [Meilleures méthodes pour analyser HTML] (http://stackoverflow.com/questions/3577641/best- methods-to-parse-html/3577662 # 3577662) – Gordon

Répondre

1

Vous pouvez utiliser file_get_contents("http://someurl.com"); pour aller chercher un site Web externe.

Le résultat sera une chaîne contenant tout le code HTML de la page Web. Vous pouvez ensuite analyser ce code HTML en utilisant un analyseur HTML pour obtenir les informations dont vous avez besoin.

EDIT comme noté par El Yobo, cette fonctionnalité peut être désactivée. Pour l'activer, vous devez activer le fopen wrappers.

+0

Juste pour noter que ceci est souvent désactivé pour des raisons de sécurité; vérifiez que allow_url_fopen est activé, et pensez à le désactiver et à utiliser curl à la place même si c'est le cas :) –

0

peut être utile d'essayer de savoir ce que le code d'erreur est? essayez-vous d'effectuer une demande HttpRequest sur un serveur tiers - il se peut qu'ils vous restreignent l'accès, il pourrait également y avoir un certain nombre d'autres choses, y compris des délais d'attente légitimes parce que votre connexion Internet n'est pas bonne quelques plus de données :-)

0

Le "Parfois" me laisse penser qu'il pourrait y avoir des problèmes dans votre connexion au réseau de votre serveur. Avez-vous essayé de parcourir la page directement à partir du serveur, par exemple en utilisant curl ou wget? Dans le cas contraire, j'implémente habituellement file_get_contents comme conseillé par Luca.

Questions connexes