Извлечение данных с помощью парсера PHP DOM
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 или выполните действия "Экран -> ПКМ -> Исследовать".
При анализе исходного кода страницы мы видим, что имена книг хранятся в тегах "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>";
}
При правильном выполнении этого кода вы должны получить следующий результат:
Имена книг получены правильно. Что, если я хотел бы получить также их цены? Какой сценарий мне нужно было создать? Конечно, первое, что нам нужно сделать, это определить теги, в которых хранятся цены книг.
Как видно, цены книг хранятся в тегах 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(). Это позволяет нам получить доступ к большинству данных и анализировать их.
Хорошего чтения 🌸 🌸