Extraire tous les liens d’une page xHTML avec XPath (PHP)

Il est simple d’extraire tous les liens d’une page xHTML avec XPath. Le bout de code suivant permet de présenter sous la forme d’un tableau tous les liens d’une page avec pour chacun les informations suivantes son ancre, son title, son url des destination et son attribut rel sont affichés dans une cellule. Il est simple à partir de ces quelques lignes de se fabriquer un petit robot capable de suivre la présence ou non d’un lien déposé sur une page, de calculer le pourcentage de liens en dofollow et nofollow d’une page, …

<?php
header('Content-Type: text/html; charset=utf-8');

$url = 'http://leparisien.fr/';

$html = file_get_contents($url);

$doc = new DOMDocument();
$doc->loadHTML($html);

$xpath = new DOMXpath($doc);

$nodes = $xpath->query('//a');
?>
<html>
<head>
<style>td{border:1px solid black;padding:5px;}th{background:darkgrey;}.red{color:red;}</style>
</head>
<body>
<?php

if($nodes)
{

	echo '<h1>les <span class="red">'.$nodes->length. '</span> liens de la page : '.$url.'</h1>';

	echo '<table>
			<thead><tr><th>ancre</th><th>title</th><th>url</th><th>rel</th></tr></thead><tbody>';

	foreach($nodes as $node) {
		if($node->getAttribute('rel')){$rel = $node->getAttribute('rel');}else{$rel= "-";}
		if($node->getAttribute('title')){$title = $node->getAttribute('title');}else{$title= "-";}
		if($node->nodeValue){$ancre = $node->nodeValue;}else{$rel= "-";}
		if($node->getAttribute('href')){$href = $node->getAttribute('href');}else{$rel= "-";}
		
		echo '<tr><td>'. $ancre .'</td><td>'. $title .'</td><td>'. $href .'</td><td>'.$rel.'</td></tr>';	
	}

	echo '</tbody></table>';
}
else
{
	echo 'aucun lien trouvé';
}
?>
</body>
</html>

Voici un exemple de page générée par ce petit code pour la page « http://leparisien.fr »

xpath liens

Publié dans PHP, SEO

quand j’aurai le temps

  • les filtres wordpress
  • plugin wordpress et enregistrement de données
  • les wordpress custom post type
  • la bdd d'un blog wordpress
  • la balise more de wp
  • personnaliser une galerie wp
  • gérer les longueurs des extraits de wp
  • les animations css3
  • le memento symphony2
  • le squelette d'une page html5
  • liste sur plusieurs colonnes
  • le responsive design
  • exemple d'un jeu basique en html5
  • la réplication des bases de données
  • mettre en place une architecture en silo avec wp
  • parser un fichier xml (donc un rss) avec php5
  • mettre en place lightbox sans plugin
  • améliorer les performances de son wp
  • ajouter un bouton à l'éditeur de texte de wp
  • ...