Запрос к другому серверу или сайту с помощью PHP

Рубрика: PHP
4 декабря 2015

Приветствую Вас, уважаемые читатели блога webcodius.ru. В процессе разработки различных веб-сервисов периодически появляется необходимость сбора различной информации с других сайтов. Т.е. требуется  производить парсинг сайтов. Особенность парсинга — это быстрый и автоматизированный сбор данных и контента со страниц сайта. Например, часто требуется получить каталог товаров, включая картинки, с различных интернет-магазинов в автоматическом режиме. В этом случае и пригодится механизм парсинга сайтов.

 В основном в php применяется два способа получения контента со страниц сайта.

1. get — запрос с помощью функции file_get_contents (). 

Функция позволяет получить содержимое файла в виде одной строки и имеет следующий синтаксис:

string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] )
где filename — путь к файлу.

В случае неудачи функция возвращает FALSE.

В качестве имени файла можно указывать URL, то есть можно указать адрес нужной web-страницы, тогда функция вернет ее содержимое в виде html-кода. Например:

$url = 'https://webcodius.ru/';
$result = file_get_contents ($url);

2. Использование библиотеки CURL.

В случае использования CURL код становится более громоздким, но появляется больше различных возможностей, так как библиотека имеет множество настроек и позволяет выполнять get и post запросы

Получение содержимого страницы состоит из четырех действий:

  • инициализация сеанса с помощью функции curl_init();
  • установка нужных параметров с помощью функции curl_setopt();
  • выполнение запроса функцией curl_exec();
  • закрытие сеанса функцией curl_close().

Например:

 if ( $curl = curl_init () ) //инициализация сеанса
{
    curl_setopt ($curl, CURLOPT_URL, 'http://webcodius.ru/');//указываем адрес страницы
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($curl, CURLOPT_HEADER, 0);
    $result = curl_exec ($curl);//выполнение запроса
    curl_close ($curl);//закрытие сеанса
  }

С помощью опции CURLOPT_URL указывается адрес веб страницы, опция CURLOPT_RETURNTRANSFER при ненулевом значении результат будет возвращен, а не выведен.

Если необходимо выполнить POST запрос к удаленному сайту, то необходимо опцию CURLOPT_POST установить в true, а в опцию CURLOPT_POSTFIELDS поместить передаваемые данные:

if ( $curl = curl_init () ) //инициализация сеанса
{
    curl_setopt ($curl, CURLOPT_URL, 'http://webcodius.ru/');//указываем адрес страницы
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($curl, CURLOPT_POST, true);
    curl_setopt ($curl, CURLOPT_POSTFIELDS, «i=1»);
    curl_setopt ($curl, CURLOPT_HEADER, 0);
    $result = curl_exec ($curl);//выполнение запроса
    curl_close ($curl);//закрытие сеанса
  }

В результате обоих способов в переменную $result попадает контент заданной страницы в виде строки html кода. После этого можно переходить непосредственно к парсингу страницы, то есть к извлечению из содержимого строки нужных данных. Например получить все картинки со страницы или извлечь текстовый контент.

Для парсинга можно воспользоваться регулярными выражениями, но лучше использовать встроенную библиотеку DOMDocument или библиотеку SimpleHTMLDOM.

На этом все, до новых встреч!

Получай статьи почтой:

Случайные записи


Оставить комментарий




Подписаться, не комментируя -