# Scraping Links

Le scraping de liens fonctionne de manière très similaire ay scraping d'images. Vous pouvez récupérer une liste d'URL sans aucune information supplémentaire ainsi qu'une liste détaillée contenant rel, target ainsi que d'autres attributs.

# Liste de liens simples

L'exemple suivant analyse une page Web à la recherche de liens et renvoie un tableau d'URL absolues:

$web = new \Spekulatius\PHPScraper\PHPScraper;

/**
 * Naviguez vers la page de test. Elle contient 6 liens vers placekitten.com avec des attributs différents:
 *
 * <h2>Different ways to wrap the attributes</h2>
 * <p><a href="https://placekitten.com/408/287" target=_blank>external kitten</a></p>
 * <p><a href="https://placekitten.com/444/333" target="_blank">external kitten</a></p>
 * <p><a href="https://placekitten.com/444/321" target='_blank'>external kitten</a></p>
 *
 * <h2>Named frame/window/tab</h2>
 * <p><a href="https://placekitten.com/408/287" target=kitten>external kitten</a></p>
 * <p><a href="https://placekitten.com/444/333" target="kitten">external kitten</a></p>
 * <p><a href="https://placekitten.com/444/321" target='kitten'>external kitten</a></p>
 */
$web->go('https://test-pages.phpscraper.de/links/target.html');

// Imprimer le nombre de liens.
echo "Cette page contient " . count($web->links) . " liens.\n\n";

// Boucle à travers les liens
foreach ($web->links as $link) {
    echo " - " . $link . "\n";
}

/**
 * Combiné, cela s'imprimera:
 *
 * Cette page contient 6 liens.
 *
 * - https://placekitten.com/408/287
 * - https://placekitten.com/444/333
 * - https://placekitten.com/444/321
 * - https://placekitten.com/408/287
 * - https://placekitten.com/444/333
 * - https://placekitten.com/444/321
 */

Si la page ne doit pas contenir de liens, un tableau vide est renvoyé.

# Liens avec les détails

Si vous avez besoin de plus de détails, vous pouvez y accéder de la même manière que pour les images. Voici un exemple pour accéder aux données détaillées du premier lien de la page:

$web = new \Spekulatius\PHPScraper\PHPScraper;

/**
 * Naviguez vers la page de test. Cette page contient un certain nombre de liens avec des attributs rel différents. Pour gagner de la place, ne retenez que le premier:
 *
 * <a href="https://placekitten.com/432/287" rel="nofollow">external kitten</a>
 */
$web->go('https://test-pages.phpscraper.de/links/rel.html');

// Obtenez le premier lien de la page.
$firstLink = $web->linksWithDetails[0];

/**
 * $firstLink contient maintenant:
 *
 * [
 *     'url' => 'https://placekitten.com/432/287',
 *     'protocol' => 'https',
 *     'text' => 'external kitten',
 *     'title' => null,
 *     'target' => null,
 *     'rel' => 'nofollow',
 *     'isNofollow' => true,
 *     'isUGC' => false,
 *     'isNoopener' => false,
 *     'isNoreferrer' => false,
 * ]
 */

Si vous avez besoin de plus de données, vous devrez soit étendre la bibliothèque, soit soumettre une question pour examen.

# Liens internes et liens externes

PHPScraper permet de retourner seulement des liens internes ou externes. L'exemple suivant démontre les deux:

$web = new \Spekulatius\PHPScraper\PHPScraper;

// Naviguer vers la page de test.
$web->go('https://test-pages.phpscraper.de/links/base-href.html');

// Obtenez la liste des liens internes (dans l'exemple, une image est liée).
var_dump($web->internalLinks);
/**
 * [
 *     'https://test-pages.phpscraper.de/assets/cat.jpg'
 * ]
 */

// Obtenir la liste des liens externes
var_dump($web->externalLinks);
/**
 * [
 *     'https://placekitten.com/408/287'
 * ]
 */