Как парсить веб-сайт с использованием PHP CURL в фреймворке Laravel
Привет, сегодня я хочу поделиться информацией о парсинге данных с использованием PHP CURL в Laravel. В этом руководстве я хочу рассмотреть конкретный случай - парсинг данных с веб-сайта https://decisiondata.org/tv-internet-by-zip/01001-internet/ и получение некоторых данных оттуда, таких как название города, название провайдера интернета и процентное соотношение каждой услуги. Затем я экспортирую эти данные в файл Excel с таким форматом:
Хорошо, вот пошаговая инструкция в этом руководстве:
Установка нового проекта Laravel
Первый шаг - установить фреймворк Laravel. В этом руководстве я использую Laravel 6. Установить его можно с помощью Composer следующим образом:
composer create-project --prefer-dist laravel/laravel php_scraping
После успешной установки у нас будет структура исходных файлов проекта, которая выглядит следующим образом:
Установка библиотеки Laravel Excel
Эта библиотека уже очень популярна. Она помогает нам легко экспортировать данные в файл Excel. Вы можете прочитать документацию по этой библиотеке на https://docs.laravel-excel.com/3.1/getting-started/
Я использую Composer для ее установки. Откройте терминал и перейдите в директорию вашего проекта, затем введите:
Теперь мы можем посмотреть на наш файл composer.json, и библиотека уже установлена там.
Установка библиотеки PHP Simple DOM Parser
Следующим шагом нам необходимо установить библиотеку PHP Simple DOM Parser, чтобы помочь нам получить нужный нам элемент HTML и его значение. Эта библиотека полезна и позволяет легко получать элемент HTML по классу или идентификатору, подобно JQuery.
Вы можете прочитать документацию по этой библиотеке на https://github.com/Kub-AT/php-simple-html-dom-parser
Мы можем установить ее с помощью Composer с помощью команды
composer require kub-at/php-simple-html-dom-parser
и наш файл composer.json уже обновлен следующим образом
Давайте напишем PHP Curl
Давайте начнем кодировать PHP Curl для парсинга веб-сайта. Мы можем начать с создания папки "Exports" внутри папки "app", а затем создать файл "DataExport.php" внутри папки "Exports". Теперь у нас будет такая структура:
Затем откройте файл DataExport.php и создайте функцию для парсинга данных веб-сайта, например:
Вы можете ознакомиться с библиотекой php simple html dom parser, чтобы узнать больше об этом. Вы можете использовать код выше, чтобы найти элемент html с определенным идентификатором или классом, например, эту строку кода:
$dom->find('section.internet-data > div.et_column_last > ul > li > p')
Как и в случае с JQuery, это очень просто, чтобы получить данные из любого элемента html. После получения элемента мы можем обработать его, получить текст и сохранить его в базе данных или экспортировать в файл Excel.
Теперь у нас уже есть данные, следующий шаг - экспорт их в файл Excel. В этом руководстве я использовал способ экспорта данных из представления Laravel, как описано в документации https://docs.laravel-excel.com/3.1/exports/from-view.html
Создайте функцию вот так:
Нам нужно создать представление "excel_report.blade.php" внутри папки resources/views, вот так:
Теперь последний шаг - нам нужно создать контроллер, чтобы вызвать библиотеку Laravel Excel, вот так:
Хорошо, теперь мы готовы запустить наш скрипт. Мы можем ввести следующую команду в нашем терминале:
php artisan serve
и затем выполнить адрес локального хоста в нашем браузере. Мы получим загруженный файл Excel, содержимое которого будет выглядеть так:
Готово, теперь мы успешно спарсили веб-сайт. Вы можете получить полную версию исходного кода этого проекта в моем репозитории https://github.com/juangsalaz/php-scraping
Надеюсь, этот учебник будет полезен и поможет вам всем :)
Спасибо