Bonjour à tous,
Je souhaiterais récupérer tous les liens d'une page html qui commence par http://plantoburo.com/.
Merci de votre aide.
Bonjour à tous,
Je souhaiterais récupérer tous les liens d'une page html qui commence par http://plantoburo.com/.
Merci de votre aide.
Il faut savoir dans quoi tu recherche cette information pour savoir la délimitation de fin.
En effet si tu recherche dans du code HTML, tu aura :
Et donc, il faudra prendre en compte le ". Alors que si tu cherche dans du texte en dur, cela ne sera pas nécessaire.
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <a href="http://plantoburo.com/home">Lien</a>
Enfin en regex :
Initiation aux expressions régulières en PHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part http\:\/\/plantoburo\.com.*
Cordialement,
Patrick Kolodziejczyk.
Si une réponse vous a été utile pensez à![]()
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
Hello,
si tu veux grabber les liens d'un site web, tu as plusieurs possibilités.
Je te conseille :
- AAA) soit de passer par CURL pour télécharger ta page web, récupérer le contenu HTML, et ... récursivement, récupérer les liens de ta page via un preg-match-all (http://php.net/manual/fr/function.preg-match-all.php) sur tous les liens démarrant par http://plantoburo.com/ (startsWith($link, 'http://plantoburo.com/'); )
function startsWith($haystack, $needle) {
return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE;
}
Suite à cela, enregistrer chacun de ces liens de manière unique dans un tableau :
$tab[$link] = 1;
=> $link sera enregistré une seule et unique fois dans ton tableau. Pas la peine de faire des filtrages sur ton tableau après avoir récupéré toutes les urls de ta page.
Puis, pour chaque lien dans ton tableau, accéder à la page dédiée et faire le même process depuis AAA)
-BBB) Soit de télécharger le contenu de ta page via CURL ou file_get_contents(), et utiliser le xpath pour localiser tous les liens présents dans la page.
Voir ces liens pour le xpath :
http://stackoverflow.com/questions/2...contain-needle
http://stackoverflow.com/questions/1...ge-using-xpath
Suite à cela, enregistrer chacun de ces liens de manière unique dans un tableau :
$tab[$link] = 1;
=> $link sera enregistré une seule et unique fois dans ton tableau. Pas la peine de faire des filtrages sur ton tableau après avoir récupéré toutes les urls de ta page.
Puis, pour chaque lien dans ton tableau, accéder à la page dédiée et faire le même process depuis BBB)
Cdt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function googleIsYourF*ck*ngFriend(String url, String maQuestion){ goTo(url); reponse = find(maQuestion); if(isAcceptable(reponse)){ clickOn(By.xpath("//button[@id='resolvedButton']")); } sendMessage("Merci"); } googleIsYourF*ck*ingFriend("http://www.google.fr", "ma question");
PHP dispose d'outils dédiés au parsing du HTML:
- la classe DOMDocument qui créé une représentation arborescente d'un code html et dispose de méthodes permettant de charger, enregistrer, interroger et modifier.
- la classe DOMXPath qui elle permet des requêtes complexes sur une instance de DOMDocument.
Les expressions régulières sont inappropriées pour faire ce travail, notamment du fait de la permissivité de la syntaxe HTML et de l'extrême tolérance aux erreurs des clients qui l'utilise.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 libxml_use_internal_errors(true); // évite l'affichage de warnings en cas de malformation du HTML $dom = new DOMDocument; $dom->loadHTMLFile('http://url.de.la.page/en/question'); // charge le fichier html et créé l'arbre DOM $xp = new DOMXPath($dom); // ensuite deux solutions: // - soit on créé une fonction pour vérifier l'host de l'url (on pourrait aussi vérifier le scheme "http://" dans la même fonction): $xp->registerNamespace('php', 'http://php.net/xpath'); $xp->registerPhpFunctions('hasHost'); // on rend disponible la fonction hasHost dans XPath function hasHost($nodes, $host) { $href = $nodes[0]->nodeValue; return (strtolower(parse_url($href, PHP_URL_HOST)) == $host); } $nodeList = $xp->query('//a/@href[php:function("hasHost", ., "plantoburo.com")]'); // - soit on vérifie le début de l'attribut href (mais c'est moins fiable et moins souple): // $nodeList = $xp->query('//a/@href[startswith("http://plantoburo.com", .)]'); // affichage foreach ($nodeList as $node) { echo $node->nodeValue . PHP_EOL; }
Brachygobius xanthozonus
Ctenobrycon Gymnocorymbus
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager