РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1158 of 1361 menu

Метод links класса Crawler

Метод links класса Crawler возвращает массив объектов Link, которые представляют собой ссылки a, найденные в текущем наборе узлов DOM-документа. Метод не принимает параметров и возвращает только те ссылки, которые расположены внутри узлов, содержащихся в объекте Crawler.

Каждый элемент возвращаемого массива является экземпляром класса Symfony\Component\DomCrawler\Link и содержит URI, текст ссылки и метод HTTP-запроса.

Синтаксис

public function links(): array

Пример

Давайте получим все ссылки из HTML-документа и выведем их тексты:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $html = '<div> <a href="/user">user</a> <a href="/article">article</a> <a href="/hello">hello</a> </div>'; $crawler = new Crawler($html); $links = $crawler->filter('div')->links(); $res = []; foreach ($links as $link) { $res[] = $link->getNode()->nodeValue; } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

["user", "article", "hello"]

Пример

Давайте получим адреса всех ссылок через метод getUri объекта Link:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/links', name: 'article_links')] public function links(): Response { $html = '<nav> <a href="/user">user</a> <a href="/article/1">article 1</a> <a href="/article/2">article 2</a> </nav>'; $crawler = new Crawler($html, 'http://example.com'); $links = $crawler->filter('nav')->links(); $res = []; foreach ($links as $link) { $res[] = $link->getUri(); } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

["http://example.com/user", "http://example.com/article/1", "http://example.com/article/2"]

Пример

Давайте извлечём ссылки вместе с их текстом и адресом:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/extract', name: 'article_extract')] public function extract(): Response { $html = '<ul> <li><a href="/user/1">user 1</a></li> <li><a href="/user/2">user 2</a></li> </ul>'; $crawler = new Crawler($html, 'http://example.com'); $links = $crawler->filter('ul')->links(); $res = []; foreach ($links as $link) { $res[] = [ 'text' => $link->getNode()->nodeValue, 'uri' => $link->getUri(), ]; } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

[{"text": "user 1", "uri": "http://example.com/user/1"}, {"text": "user 2", "uri": "http://example.com/user/2"}]

Пример

Давайте выведем HTTP-метод каждой найденной ссылки:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/methods', name: 'article_methods')] public function methods(): Response { $html = '<div> <a href="/article">article</a> <a href="/hello">hello</a> </div>'; $crawler = new Crawler($html, 'http://example.com'); $links = $crawler->filter('div')->links(); $res = []; foreach ($links as $link) { $res[] = $link->getMethod(); } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

["GET", "GET"]

Смотрите также

  • класс Crawler,
    который представляет DOM-документ для парсинга
  • метод filter,
    который выбирает узлы по CSS-селектору
  • метод images,
    который извлекает изображения из документа
  • метод selectLink,
    который выбирает конкретную ссылку по тексту
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить