Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

веб скрапинг

веб скрапинг

Доброго времени суток дорогие друзья и сегодня мы рассмотрим такое явление как веб- скрапинг . Более подробную информацию о нем вы можете найти в интернете. Но в общем понимании скрапинг это сбор информации с ресурсов. По сути это улучшенная форма парсинга. Ну давайте отойдем от терминологии и перейдем к делу.

В качестве инструмента для скрапинга я буду использовать известную библиотеку goutte. Найти документацию и скачать ее вы можете на https://github.com/FriendsOfPHP/Goutte.

Установить ее вы также можете через composer. Просто создав файл composer.json со следующим содержимым:

{
  "require": {
    "fabpot/goutte": "v3.2.2"
  }
}

версию подбирайте под себя. И выполнив команду composer install.

Данная библиотека через программный код php позволяет заходить на страницы, собирать данные сайта по DOM архитектуре, переходить по ссылкам, заполнять и отправлять формы, отправлять POST, GET запросы и многое другое.

use Goutte\Client;
use GuzzleHttp\Client as GuzzleClient;
require __DIR__."/vendor/autoload.php";
$client = new Client();

Здесь мы подключили библиотеку goutte и создали объект $client. Все, теперь мы можем с ней работать и расмотрим первый метод с помощью которого мы можем обходить страницы.

$crawler = $client->request('GET', 'https://youtube.com');
var_dump($crawler);

С помощью метода request() мы можем отправлять запросы на сервер. Первым параметром мы передаем тип запроса, в а вторым адрес куда отправляем запрос. В нашем случае мы с помощью запроса get перешли на сайт https://youtube.com. В качестве результата нам вернулся объект. Если мы хотим посмотреть содержимое страницы к которой мы обращались, то нам достаточно воспользоваться методом html()

$crawler = $client->request('GET', 'https://youtube.com');
echo $crawler->html();

В результате у нас вернется содержимое страницы https://youtube.com. Если мы хотим зайти на youtube и перейти по ссылке с названием 'В тренде':

$crawler = $client->request('GET', 'https://youtube.com');
$crawler = $client->click($crawler->selectLink('В тренде')->link());
echo $crawler->html();

Нам вернется страница с трендами youtube. Здесь для клика по ссылке мы воспользовались методом click() В качестве аргумента которого передали объект ссылки с названием 'В тренде'.

И это далеко не все возможности которые предоставляет нам данная библиотека.

Напоследок давайте рассмотрим процесс авторизации с помощью goutte.

$client = new Client();
$crawler = $client->request('GET', 'https://www.yandex.ru/');
$form = $crawler->selectButton('Войти')->form();
$crawler = $client->submit($form, array('login' => 'login@yandex.ru', 'passwd' => 'xxxxxxx'));
$crawler->filter('.b-messages__subject')->each(function ($node) {
   echo  $node->text()."<br/><br/><br/><br/>";
});

Разбираю по порядку. В данном примере я зашел на страницу https://www.yandex.ru/ . Нашел кнопку для отправки формы (Войти) и с помощью метода submit() отправил ее. В методе submit() я указал кнопку по клике которой форма будет отправляться, и массив в качестве ключей которого идут названия полей формы, а значений содержимое полей.

В итоге я зашел в свою yandex почту. C помощью метода filter() перебрал все элементы с классом b-messages__subject и вывел их содержимое.

В итоге с помощью данного кода я получил все заголовки своих писем которые находятся на почтовом ящике yandex .

На этом данная статья подошла к концу. Конечно мы рассмотрели небольшую часть возможностей библиотеки goutte так как для этого существует документация.

Но зато теперь вы имеете общее представление о том что такое веб скрапинг.

А я же желаю вам успехов и удачи! Пока!

Оцените статью:

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm