cURL — это библиотека командной строки, которая используется для передачи данных с использованием нескольких протоколов, таких как FTP, HTTP, SMTP, IMAP, TELNET и т. д. Вы можете использовать ее для загрузки файлов, загрузки файлов и тестовые API.

Особенности cURL:

  • Он обеспечивает поддержку SSL/TLS.
  • Вы можете передавать файлы cookie.
  • Передайте пользовательские заголовки, такие как User-Agent, Accept и т. д.
  • Вы можете использовать прокси при отправке запроса на любой хост.

cURL можно использовать в любой операционной системе, такой как Windows, MacOS, Linux и т. д. cURL уже установлен во всех операционных системах, и вы можете проверить это, набрав curl или curl --help в командной строке.

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

Давайте разберемся, как можно использовать cURL на нескольких разных примерах.

Базовый синтаксис для использования cURL всегда будет одинаковым.

curl [options] [url]

Как сделать запрос GET с помощью cURL

Допустим, вы хотите сделать запрос HTTP GET на этот URL. Тогда это можно сделать просто так.

curl https://httpbin.org/ip

Ответ будет выглядеть так.

Как сделать запрос POST с помощью cURL

Предположим, вы хотите сделать POST-запрос к API, который возвращает данные JSON, и вот как вы можете это сделать.

curl -X POST -d "param1=value1" "https://httpbin.org/post" -H "accept: application/json"

Здесь -d представляет --data параметр командной строки. -X укажет, какой метод HTTP будет использоваться, а -H используется для отправки заголовков. accept: application/json — это способ сообщить серверу, что нам нужен ответ в формате JSON.

Как использовать аутентификацию с помощью cURL

curl -X GET -u admin:admin "https://httpbin.org/basic-auth/admin/admin" -H "accept: application/json"
  • Мы использовали -X, чтобы указать, какой метод HTTP мы собираемся использовать. В текущем сценарии мы делаем запрос GET.
  • -u используется для передачи учетных данных. В общем, это известно как Базовая аутентификация. Здесь имя пользователя admin и пароль также admin.
  • Затем мы передали наш целевой URL. По этому URL-адресу мы выполняем запрос GET.
  • Последний шаг — передать заголовки. Для этого мы использовали -H для передачи заголовка accept.

Ответ будет выглядеть так.

Это одни из немногих приложений, в которых cURL можно использовать непосредственно из CMD. Вы даже можете загружать данные с веб-сайта в файл или загружать файлы на произвольный FTP-сервер с помощью cURL. Давайте попробуем еще один пример.

Как загрузить файл на FTP-сервер с помощью cURL.

curl -T random_file.txt ftp://random.com/upload/
  • -T используется, чтобы указать cURL загрузить файл random_file.txt на случайный FTP или любой другой сервер. -T это --upload-file.

Надеюсь, у вас есть представление о том, как работает cURL. Теперь давайте посмотрим, как cURL можно использовать для парсинга веб-страниц.

Как использовать cURL для парсинга веб-страниц?

Допустим, вы хотите очистить amazon.com с помощью cURL, и ваша целевая страница — эта.

curl -X GET "https://www.amazon.com/dp/B09ZW52XSQ" -H "User-Agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36, Accept-Encoding:gzip,deflate"

С помощью этой команды вы сможете собирать данные с amazon. Но что, если вы хотите очистить миллионы таких страниц? В этом случае этот метод не будет работать, потому что amazon заблокирует ваш IP-адрес из-за чрезмерного HTTP-соединения через короткий промежуток времени. Единственный способ обойти это ограничение — использовать API парсинга веб-страниц или ротационный прокси.

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

Передача прокси при выполнении запроса GET через cURL очень проста.

curl -x <proxy-server>:<port> -U <username>:<password> <URL>

Здесь -x используется для передачи URL-адреса прокси-сервера или IP-адреса, а -U используется для передачи имени пользователя и пароля, если прокси-сервер требует аутентификации.

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

Если вы зарегистрируетесь в Scrapingdog, вы найдете ключ API на своей панели инструментов. Этот API-ключ будет использоваться в качестве пароля для прокси-сервера. Вы можете прочитать документы перед использованием прокси, но использование довольно простое.

Давайте используем эту информацию, чтобы сделать запрос к amazon.

curl -x proxy.scrapingdog.com:8081 -U scrapingdog:YOUR-API-KEY https://www.amazon.com/dp/B09ZW52XSQ

Эта команда cURL будет делать запрос GET к Amazon с новым IP-адресом при каждом отдельном запросе. Это позволит избежать блокировки вашего конвейера данных от Amazon.

Что делать, если вы не хотите передавать прокси и обрабатывать повторные попытки в случае сбоя запроса? Что ж, тогда вы можете использовать Web Scraping API, который будет обрабатывать все повторные попытки, заголовки, безголовый хром и т. д.

Как использовать API веб-скрейпинга с cURL?

Использовать парсинг API с cURL очень просто. Все, что вам нужно сделать, это сделать запрос GET. Я уже объяснил вам, как вы можете сделать запрос GET, используя cURL.

Чтобы понять, как работает API, ознакомьтесь с документацией здесь.

URL-адрес API будет выглядеть так: https://api.scrapingdog.com/scrape?api_key=YOUR-API-KEY&url=https://www.amazon.com/dp/B09ZW52XSQ

Итак, команда cURL будет выглядеть так.

curl https://api.scrapingdog.com/scrape?api_key=YOUR-API-KEY&url=https://www.amazon.com/dp/B09ZW52XSQ

Это сделает запрос GET и вернет данные от amazon.

Преимущества использования API перед прокси

  • Вам не нужно управлять безголовым хромом.
  • Вам не нужно делать повторные попытки в случае сбоя запроса. API справится с этим самостоятельно.
  • управление прокси будет осуществляться самим API. API имеет возможность самостоятельно выбирать правильный прокси в зависимости от веб-сайта, который вы хотите парсить.

Обработка ошибок и исключений с помощью cURL

Необходимо обрабатывать ошибки при очистке веб-страниц. Веб-скрейпинг может быть утомительным, если ошибки не обрабатываются должным образом. Давайте обсудим некоторые методы, чтобы справиться с такой ситуацией.

Как проверить код состояния запроса в cURL?

Как правило, мы всегда проверяем код состояния ответа, чтобы проверить, был ли запрос API успешным или нет. В cURL также можно отслеживать статус запроса.

curl -s -o /dev/null -w "%{http_code}" https://www.scrapingdog.com
  • -s позволяет нам подавить любой вывод на консоль. Это означает, что вывод не будет отображаться на консоли.
  • -o перенаправит вывод в /dev/null, а не в какой-либо файл. /dev/null — это своего рода черная дыра, которая отбрасывает любой ввод. Он используется, когда вы не хотите его видеть или хранить.
  • -w выведет код ответа на консоль. Это поможет нам определить, был ли запрос API успешным или нет.

Как повторить запрос с помощью cURL, если запрос не удался?

Что делать, если запрос не выполнен, и вам нужно повторить попытку вручную? Что ж, альтернативой этому является использование цикла for. Если запрос не выполнен, вы можете подождать 5 секунд, а если запрос был успешным, вы можете выйти из цикла for.

for i in {1..5}; do curl -s https://www.scrapingdog.com && break || sleep 5; done

Цикл будет выполняться пять раз с 5-секундным промежутком на случай, если запрос продолжит отказывать.

Заключение

Веб-скрейпинг с cURL — это весело и просто. В этой статье мы сосредоточились на понимании различных функций, которые может предложить cURL. Мы рассмотрели все темы, начиная с запроса GET и заканчивая обработкой ошибок. Конечно, cURL может предложить бесконечное количество функций.

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

Я надеюсь, вам понравится это небольшое руководство о том, как выполнять парсинг веб-страниц с помощью cURL. Было бы здорово, если бы вы могли поделиться этой статьей на своих социальных платформах.

Дополнительные ресурсы

Вот несколько дополнительных ресурсов, которые могут оказаться полезными во время изучения веб-страниц: