fonction php d extraction de lien d une page

  • Auteur de la discussion Auteur de la discussion cr500
  • Date de début Date de début
WRInaute occasionnel
Bjr a tous

voila je cherche une fonction en php qui me permet d'extraire les liens d'une url

pouvez vous m'aider svp je ne la trouve pas

grd merci a vous
 
WRInaute discret
extraire les liens ?

Tu veut une fonction qui te recense les liens "<A HREF='.... " présent sur une page donnée ?
Je ne crois pas qu'il existe de fonction préprogrammé, va falloir que tu te la fasse toi même. Mais sache que c'est possible, et que ça s'apelle un robot.

Si j'ai bien compris ta demande ...
 
WRInaute discret
C un peu compliqué. Pense tout de suite à passer à LINUX, car sous Windows, je ne vois pas comment on pourrait faire

Premièrement, il faut arriver à récupérer une page depuis internet à partir de son URL. Aucune fonction en PHP ne fait ça. Mais on dispose de la fonction shell_exec() qui retourne le résultat d'une commande effectuée dans le shell Linux.

Exemple : $monfichier=shell_exec("cat mon_fichier.txt");
la variable $monfichier contiendra le contenu de ton fichier.

De même, il existe des commande sous linux (wget) qui permettent de récupérer le code HTML d'une page à partir de l'URL. Il devient donc facile de récupérer le code HTML d'une page dans PHP.

ensuite, avec les fonctions sur les chaines de PHP, tu doit pouvoir extraire toutes les informations qui te sont necéssaires...

Avec ces quelques noms, tu devrais pouvoir te renseigner sur la façon dont ça fonctionne. Apprend à utiliser Linux et particulièrement le bash, car sous Windows, il n'y a aucun outils viable, aucune fonction pertinente </troll>

J'espère t'avoir aider...

PS: n'oublie que le spam, c'est pas classe !
 
WRInaute impliqué
pedouille a dit:
Premièrement, il faut arriver à récupérer une page depuis internet à partir de son URL. Aucune fonction en PHP ne fait ça. Mais on dispose de la fonction shell_exec() qui retourne le résultat d'une commande effectuée dans le shell Linux.

Ah bon !!

Au hasard fopen("http://......").

On a aussi toutes les fonctions curl, et si on a le courage fsockopen.
 
WRInaute occasionnel
pedouille a dit:
C un peu compliqué (...)
Premièrement, il faut arriver à récupérer une page depuis internet à partir de son URL. Aucune fonction en PHP ne fait ça.

Gni 8O ?

Code:
$fp=fopen("http://www.site.com/","r");
while(!feof($fp)) 
{ 
$fichier_texte=fgets($fp,1024); 
if (ereg("href='(.*)'",$fichier_texte,$result)) {
echo $result[0]."<br>";
}
}

Grosso modo ca devrait marcher. Avant de dire "je ne sais pas faire" il faut un peu chercher - ras le bol des feignants qui ne savent pas se débrouiller un minimum par eux meme.

PS: 5 minutes avant de lire ta question je ne savais pas y répondre - a ton avis comment m'y suis-je pris ? :x
 
WRInaute occasionnel
Comment ça se la pete, tout le monde n'a pas le même niveau et sache que c'est cool de ta part de l'avoir aidé... après pas la peine d'en faire un fromage et de le traiter de faignant.....
 
WRInaute occasionnel
Je n'ai pas envie de troller.... mais en general quand on cherche on trouve. Desole d'avoir ete un peu reactif. :wink:

PS: Je venais juste de lire le post de celui qui voudrait qu'on lui dise comment faire un espace membre en php alors ceci explique cela... pourquoi pas un site e-commerce tant qu'on y est...
 
WRInaute discret
Faut se détendre les gars .

C dommage de se facher comme ça :cry:

Il ne sait pas par quelle bout commencer, c tout.

Le mieux c'est que chacun apporte sa réponse, comme ça il pourra piocher dans ce qu'il veut, et ça peut servir à d'autre.

Et je suis désolé de m'être mal exprimé. Je suis parti du principe qu'il cherche à faire un robot, et c'est pour ça que je lui conseille le bash. Je ne suis pas sur que la fonction fopen permettent de gérer le user-agent, et encore moins les problèmes de timeout.

J'ai encore une autre solution si vous voulez : tu ouvre la page avec ton navigateur, tu fait afficher le code source, tu récupère (CTRL-C CTRL-V) le code source et tu le met dans un fichier texte, puis tu le lit avec PHP....
Tout ça pour dire que des solutions simplistes, il en existe plein, ça marche avec 2 ou 3 sites, pi au 4eme, on en a marre...

Ne vaut-il pas mieux chercher une solution élaborée et efficace ? quitte à y passer plus de temps ?

Alors toi qui traite les gens de fainéants, n'est-ce pas une forme de fainéantise que de répondre la première fonction (qui est aussi la plus simple) qui te passe par la tête (ou par le clavier), plutôt que de chercher quel est le vrai problème, et une solution viable qui va avec...

Car je pense que pour faire un robot avec fopen, il va falloir méchament bricoler ...
 
WRInaute occasionnel
Effectivement si la question était "comment programmer le nouveau google ?" je suis trop feignant pour y répondre...

Pour etre plus constructif en effet si tu veux faire un vrai robot alors il va falloir mettre les mains dans le camboui, peut-etre faire un peu de CURL etc. mais bon, mieux vaut commencer par la base a mon sens (et clairement quand la question est "y a t'il une fonction en php qui permette de recuperer les url d'une page" il vaut mieux partir du plus simple...)

Mes 2 cents
 
WRInaute discret
effectivement, vu comme ça, tu as raison ...

Le mieux est donc que cr500 nous dise ce qu'il veut exactement ...
 
WRInaute occasionnel
je veux pas un robot masi juste une fonctionne pour recuperer les lien d 'une de mes page sans les copier coller en manuel
 
WRInaute impliqué
Cool les mecs ! :D

fr.php.net/file_get_contents (beaucoup plus simple que tout un script avec feof, fopen tout le bazar :lol:

et ensuite : preg_match_all, je te donnerais mon code pour extraire tous les liens, je l'ai utilisé pour ggposition, ce soir tu l'auras ;)

[edit]Ah bah non tout de suite ^^ :

Code:
		preg_match_all('/a href=http:\/\/?[^> ]+/i',$content,$lnk);
		$size = sizeof($lnk[0]);
		$i = 0;
		while ($i < $size) {
			$link = str_replace('a href=', '', $lnk[0][$i]);
			$enregistre_liens[] = $link;

Et voilà tu as tous tes liens dans $enregistre_liens ;)
 
WRInaute occasionnel
eu le script ne fonction pas vraimenet lol
$content je met koi ?
lnk je suppose je met le lien de la page !!
 
WRInaute occasionnel
arf je comprend rien , et pourtan tle php j en suis pas a echo lol


je souhaite indexer tous les liens de mon site (des centaines )
 
WRInaute occasionnel
Si tu souhaites une fonction qui ouvre ta page, la parcours et recherche tous les liens qui s'y trouvent la fonction que je t'ai proposée plus haut devrait marcher...
 
Discussions similaires
Haut