CoderCastrov logo
CoderCastrov
Кодирование

Извлечение данных с помощью парсера PHP DOM

Извлечение данных с помощью парсера PHP DOM
просмотров
2 мин чтение
#Кодирование
Table Of Content

    С развитием технологий количество доступных нам данных и источников данных постоянно растет. Эти данные могут быть получены из любого источника. Извлечение большого объема данных и получение полезной и значимой информации из этих данных осуществляется с помощью data mining.

    В PHP существует несколько способов выполнения data mining. В этой статье будет показано, как можно использовать парсер DOM в PHP для извлечения данных.

    Simple HTML Dom Parser - это часто используемая библиотека для извлечения данных. Он использует селекторы CSS для выполнения извлечения данных. Чтобы использовать его в проекте, сначала нужно загрузить библиотеку. После завершения загрузки включите файл "simple_html_dom.php" в свой проект.

    <?php 
      include("simple_html_dom.php"); 
    ?>

    После указанного выше шага наша библиотека готова к использованию. Чтобы показать, как выполняется извлечение данных, я буду использовать сайт "Books To Scrape". На этом сайте представлены книги разных жанров и информация о их ценах. Нашей целью является получение информации о этих товарах с использованием парсера DOM.

    Для отображения желаемого веб-сайта используется функция file_get_html(). Эта функция возвращает содержимое страницы.

    <?php 
      require "simple_html_dom.php";
    
      $html = file_get_html('https://books.toscrape.com/');  // URL-адрес Books To Scrape
      echo $html;

    При выполнении указанной выше строки кода будет отображено содержимое этого сайта. Нам нужны селекторы CSS. Чтобы получить доступ к этим значениям, нажмите F12 или выполните действия "Экран -> ПКМ -> Исследовать".

    Определение селекторов CSS

    При анализе исходного кода страницы мы видим, что имена книг хранятся в тегах "h3". Поэтому нам нужно найти тег h3 в переменной $html.

    $html = file_get_html('https://books.toscrape.com/');  // URL-адрес Books To Scrape
    $book_names =$html->find('h3'); // указываем теги h3, в которых хранятся имена
    
    foreach($book_names as $name){ // так как есть несколько названий книг, мы можем вывести их с помощью цикла
       echo $name->plaintext . "<br>";
    }

    При правильном выполнении этого кода вы должны получить следующий результат:

    Названия книг

    Имена книг получены правильно. Что, если я хотел бы получить также их цены? Какой сценарий мне нужно было создать? Конечно, первое, что нам нужно сделать, это определить теги, в которых хранятся цены книг.

    Определение селекторов CSS для цен книг

    Как видно, цены книг хранятся в тегах p с классом "price_color". Теперь пора найти значение p[class="price_color"] в переменной $html.

    <?php 
      require "simple_html_dom.php";
    
      $html = file_get_html('https://books.toscrape.com/');  // URL-адрес Books To Scrape
      $book_prices =$html->find('p[class="price_color"]'); // указываем теги p, в которых хранятся цены
    
      foreach($book_prices as $prices){ // так как есть несколько цен, мы можем вывести их с помощью цикла
        echo $prices->plaintext . '<br>';
      }
    ?>

    При выполнении этого кода вы получите информацию о ценах книг на сайте.

    Информация о ценах

    В заключение, когда мы передаем URL в функцию file_get_html(), мы можем получить данные, находящиеся на этом сайте. Чтобы найти нужный селектор, мы используем функцию find(). Это позволяет нам получить доступ к большинству данных и анализировать их.

    Хорошего чтения 🌸 🌸