Extraire les liens d'une page avec les expressions regulières et DOM

Pour extraire les liens d'une page web, il existe 2 approches: la recherche de balises HTML en utilisant les expressions régulières (preg_match) et en utilisant l'objet DOMDocument.

arrow Expressions régulières: parcourir un texte pour trouver les 'portions' correspondant à un masque.
Voir les expressions régulière sur Wikipedia

arrow Objet Dom Document: parser intégralement un document XML ou HTML pour construire un objet basé sur la structure du document.
Voir l'object Dom Document sur Wikipedia

Extraire les liens d'une page HTML avec les expressions régulières

function CrawlOnePage_Preg($url) {
    $urlParts = parse_url($url);
    $baseurl = $urlParts['scheme'].'://'.$urlParts['host'].'/';
    //Charger le code source de la page internet
    $pagesrc=file_get_contents($url);
    $urlList=array();

    if (preg_match_all("/<\s*a\s+[^>]*href\s*=\s*[\"‘]?([^\"' >]+)[\"‘ >]/isU",$pagesrc,$matches)) {
        foreach($matches[1] as $link) {
            if(eregi("http://",$link)) {
                $url = strip_tags($link);
            }
            else {
                $url = $baseurl.strip_tags($link);
            }

            $urlList[] = $url;
        }
    }
    return $urlList;
}

Extraire les liens d'une page HTML avec Dom Document

function CrawlOnePage_Dom($url) {  
    $dom = new DOMDocument('1.0');
    @$dom->loadHTMLFile($url);
    $urlList=array();

    $anchors = $dom->getElementsByTagName('a');
    foreach ($anchors as $element) {
        $href = $element->getAttribute('href');
        if (0 !== strpos($href, 'http')) {
            $href = rtrim($url, '/') . '/' . ltrim($href, '/');
            $urlList[] = $href;
        }
    }
    return $urlList;
}

Exemple : extraire les liens de la page d'accueil du site en utilisant Dom Document

$list=CrawlOnePage_Dom("http://fobec.com/CMS/index.php");
$listunique=array_unique($list);
echo 'la page index.php contient '.count($list).' liens <br>';
echo count($listunique).' liens sont uniques';

foreach($list as $link) {
    echo '<br>'.$link;
}
 

Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour26/04/2010
VisualisationVu 1691 fois
PublicInternaute zz
CategorieWeb - PHP - XML
Auteur de l'article
Fobec Fobec
connecté le 18/05/2017
42 ans - France Nord-Est
104 articles dans la section
Contacter l'auteur