cURL: Что это такое и как его можно использовать для веб-парсинга

Что такое cURL?

cURL - это инструмент командной строки, который можно использовать для передачи данных по сетевым протоколам. Название cURL расшифровывается как "Client URL", а также как "curl". Эта популярная команда использует синтаксис URL для передачи данных на серверы и с серверов. Curl работает на основе 'libcurl', бесплатной и простой в использовании библиотеки передачи URL на стороне клиента.

Почему использование curl выгодно?

Универсальность этой команды позволяет использовать curl для различных целей, включая:

  • Аутентификация пользователей
  • HTTP-посты
  • SSL-соединения
  • Поддержка прокси-серверов
  • FTP-загрузки

Самым простым "сценарием" использования curl является загрузка и выгрузка целых сайтов с помощью одного из поддерживаемых протоколов.

Протоколы curl

Хотя curl имеет длинный список поддерживаемых протоколов, по умолчанию он будет использовать HTTP, если вы не укажете конкретный протокол. Вот список поддерживаемых протоколов:

Команда cURL - список поддерживаемых протоколов - dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, stmp, rtsp, scp, sftp, smb, sms, telnet, tftp

Установка curl

Команда curl устанавливается по умолчанию в дистрибутивах Linux.

Как проверить, установлена ли у вас команда curl?

  1. Откройте консоль Linux
  2. Введите 'curl' и нажмите 'enter'.
  3. Если у вас уже установлен curl, то вы увидите следующее сообщение:

terminal window cURL try -help -manual commands

4. Если curl еще не установлен, то появится следующее сообщение: 'command not found'. Тогда вы можете обратиться к своему дистрибутиву и установить его (подробнее об этом ниже).

Как использовать cURL

Синтаксис Curl довольно прост:

command line Curl options url
Например, если вы хотите загрузить веб-страницу: webpage.com, просто выполните команду:

curl command line webpage.com
Команда выдаст исходный код страницы в окне терминала. Следует помнить, что если вы не укажете протокол, то по умолчанию curl будет использовать HTTP. Ниже приведен пример определения конкретных протоколов:

ftp cURL command line syntax

Если вы забудете добавить ://, то curl сам догадается, какой протокол вы хотите использовать.

Мы вкратце рассказали о базовом использовании команды, но список опций можно найти на сайте документации по curl. Опции - это возможные действия, которые вы можете выполнить над URL. Когда вы выбираете опцию, она указывает curl, какое действие следует выполнить с указанным URL. URL указывает cURL, где он должен выполнить это действие. Затем cURL позволяет перечислить один или несколько URL.

Чтобы загрузить несколько URL, добавьте к каждому URL префикс -0, за которым следует пробел. Это можно сделать в одной строке или написать для каждого URL отдельную строку. Можно также загрузить часть URL, перечислив страницы. Например:
 curl command line for multiple pages on website

Сохранение загрузки

С помощью curl можно сохранить содержимое URL в файл, используя два различных метода:

1. Метод -o: Позволяет добавить имя файла, в который будет сохранен URL. Эта опция имеет следующую структуру:

Command line CURL filename

2. -O method: Здесь не нужно добавлять имя файла, так как данная опция позволяет сохранить файл под именем URL. Чтобы использовать эту опцию, достаточно поставить перед URL-адресом префикс -O.

Возобновление загрузки

Может случиться так, что загрузка остановится на середине. В этом случае перепишите команду, добавив в начало опцию -C :

curl filename as URL

Почему curl так популярен?

Curl - это действительно "ножницы" команд, созданные для выполнения сложных операций. Однако существуют альтернативы, например, 'wget' или 'Kurly', которые подходят для более простых задач.

Curl - фаворит среди разработчиков, поскольку он доступен практически для всех платформ. Иногда он даже устанавливается по умолчанию. Это означает, что какие бы программы/рабочие места вы ни запускали, команды curl должны работать.

Кроме того, есть шанс, что если вашей ОС меньше десяти лет, то curl уже установлен. Вы также можете прочитать документацию в браузере и проверить документацию по curl. Если вы используете последнюю версию Windows, то, скорее всего, у вас уже установлен curl. В противном случае ознакомьтесь с этой статьей на Stack Overflow, чтобы узнать больше о том, как это сделать.

Использование cURL с прокси-серверами

Некоторые пользователи предпочитают использовать cURL совместно с прокси-сервером. К преимуществам можно отнести:

Увеличение возможности успешного управления запросами данных из различных геолокаций.
Экспоненциальное увеличение числа одновременно выполняемых заданий с данными. 
Для этого можно воспользоваться встроенными в cURL возможностями '-x' и '(- - proxy)'.
Полезно знать: cUrl совместим с большинством распространенных типов прокси, включая HTTP, HTTPS и SOCKS.

Как изменить User-Agent

User-Agent - это характеристики, позволяющие целевым сайтам идентифицировать устройство, запрашивающее информацию. Целевой сайт может потребовать от запрашивающих определенные критерии для возврата нужных данных. Это может касаться типа устройства, операционной системы или используемого браузера. В этом случае организации, собирающие данные, стремятся подражать идеальному "кандидату" на целевой сайт. 

Для примера предположим, что сайт, на который вы ориентируетесь, "предпочитает" использовать в качестве браузера Chrome. Для того чтобы получить нужный набор данных с помощью cURL, необходимо эмулировать эту "особенность браузера" следующим образом: 

curl -A "Goggle/9.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Chrome/103.0.5060.71" https://getfedora.org/.

Парсинг с помощью cURL

Совет: обязательно соблюдайте правила сайта, и вообще не пытайтесь получить доступ к защищенному паролем содержимому, которое в большинстве случаев является незаконным или, по крайней мере, не одобряется.

С помощью curl можно автоматизировать повторяющийся процесс веб-парсинга, что поможет избежать утомительных задач. Для этого необходимо использовать PHP. Вот пример, найденный нами на GitHub:

web scraping script in php using curl
Когда вы используете curl для сканирования веб-страницы, вы должны использовать три опции:

  • curl_init($url) -> Инициализирует сессию
  • curl_exec() -> Выполняет
  • curl_close() -> Закрытие

code syntax for scraping a web page using curl

Другие опции, которые следует использовать, включают:

curlopt_url -> Задает URL, по которому будет производиться поиск
setting the URL you want to scrape with cURL
Curlopt_returntransfer -> Указывает curl сохранять соскобленную страницу как переменную. (Это позволяет получить именно то, что вы хотели извлечь из страницы).
curl command line for saving scraped page as a variable

Итог

Несмотря на то что cURL является мощным инструментом веб-парсинга, он требует от компаний затрат драгоценного времени разработчиков как на сбор данных, так и на их очистку.

См. также: Парсинг сайтов и маркетплейсов, Как спроектировать решение для веб-парсинга: Пошаговое руководство, Разработка ПО.