Компании, которые хотят оставаться впереди и принимать более обоснованные решения, зависят от веб-данных больше, чем когда-либо. Crawlbase делает это легко с помощью мощных инструментов для веб-скрейпинга. Один из лучших продуктов, Crawlbase Crawler, помогает вам собирать данные асинхронно, не дожидаясь ответа. Вы можете отправлять URL-адреса на него с помощью Crawlbase Crawling API, и вместо того, чтобы ждать или постоянно проверять результаты, Crawler автоматически отправляет собранные данные на ваш сервер с помощью вебхука — все в режиме реального времени. Это означает более быстрый сбор данных с меньшими усилиями.

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

Вот подробное видео о том, как использовать Crawlbase Crawler:

Создание Crawlbase Crawler

Для использования Crawler, вы должны сначала создать его из вашего Crawlbase Панель управления учетной записью. В зависимости от ваших потребностей вы можете создать два типа Crawler, TCP или JavaScript. Используйте TCP Crawler для сканирования статических страниц. Используйте JS Crawler когда контент, который вам нужно сканировать, генерируется с помощью JavaScript, либо потому, что это страница, созданная с помощью JavaScript (React, Angular и т. д.), либо потому, что контент динамически генерируется в браузере.

Для примера мы создадим TCP-сканер из приборная панель.

Изображение, показывающее Создать Crawler Страница без опций

Чтобы создать Crawler, нам либо придется создать вебхук, либо мы можем использовать Crawlbase Cloud Storage. Если вы не хотите создавать свой собственный вебхук и хранить данные Crawler генерирует безопасно, Crawlbase предлагает бесшовное решение благодаря своему Crawlbase Cloud Storage.

Crawlbase Cloud Storage вариант

Настроив свой Crawler для использования конечной точки Storage webhook вы можете безопасно хранить ваши просканированные данные с дополнительной конфиденциальностью и контролем — не беспокоясь об ограничениях хранилища. Для этого просто выберите Crawlbase Storage вариант при создании вашего Crawler.

Если вы предпочитаете не использовать Crawlbase Storage, вы можете указать собственную конечную точку веб-перехватчика для получения данных напрямую. Ниже приведены шаги, объясняющие, как создать веб-перехватчик, который соответствует Crawlbase Crawlerтребования с использованием Фреймворк Python Django.

1. Создание вебхука

A webhook это механизм обратного вызова на основе HTTP, который позволяет одной системе отправлять данные в реальном времени другой, когда происходит определенное событие. В случае Crawlbase Crawler вебхук должен…

  1. Быть доступным для общественности Crawlbase серверы
  2. Будьте готовы принимать вызовы POST и отвечать в течение 200 мс.
  3. Ответьте в течение 200 мс кодом статуса 200, 201 или 204 без содержания

Давайте создадим простой вебхук для получения ответов в фреймворке Python Django. Убедитесь, что у вас есть Питон и установленный Django. Чтобы создать простой приемник webhook с помощью Django в Python, выполните следующие действия:

ШАГ 1

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

1
2
3
4
5
6
7
8
9
10
11
# Команда для создания проекта:

django-admin startproject webhook_project

# Перейдите в каталог webhook_project с помощью терминала:

cd вебхук_проект

# Создать webhook_app:

python Manage.py startapp webhook_app

ШАГ 2

В каталоге webhook_app создайте файл views.py и определите представление для получения данных webhook:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# webhook_app/views.py

от django.ярлыки Импортировать оказывать
от django.views.декораторы.csrf Импортировать csrf_exempt
от django.http Импортировать HttpResponse
Импортировать GZIP

защиту сохранить_данные_в_файл(данным): # Предположим, вы хотите сохранить данные в файле с именем 'webhook_data.txt'
открытый('webhook_data.txt', 'а') as файл:
файл.запись(ул(данные) + '\ n')

@csrf_exempt
защиту веб-перехватчик_приемник(запросить): # Добавить запрос в очередь для асинхронной обработки
if запрос.метод == 'ПОЧТА':
стараться:
decompressed_data = gzip.decompress(request.body)
кроме ОСОшибка as e:
возвращают HttpОтвет(«Ошибка: Невозможно распаковать данные», статус=400)

# Преобразовать распакованные байтовые данные в строку (или выполнить дальнейшую обработку)
строка_данных = распакованные_данные.decode('латинский1')

# сохранить данные в файл
сохранить_данные_в_файл(строка_данных)

# вернуть 204 сканеру
возвращают HttpResponse(статус=204)

The webhook_receiver функция украшена @csrf_exempt чтобы внешние службы могли отправлять данные без защиты CSRF. Он пытается распаковать закодированные Gzip данные из тела запроса и, в случае успеха, декодирует их (предположительно HTML) в строку. Затем данные добавляются в файл с именем webhook_data.txt.

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

ШАГ 3

Настройка маршрутизации URL-адресов В каталоге webhook_project отредактируйте файл urls.py, чтобы добавить шаблон URL-адреса для приемника webhook:

1
2
3
4
5
6
7
8
9
10
# webhook_project/urls.py

от django.contrib Импортировать Администратор
от django.urls Импортировать путь
от webhook_app.views Импортировать веб-перехватчик_приемник

URL-шаблоны = [
путь('админ/', admin.site.urls),
путь('webhook/crawlbase/', webhook_receiver, имя='вебхук_приемник'),
]

ШАГ 4

Запустите сервер разработки Django для тестирования приемника веб-перехватчика:

1
2
3
# Команда для запуска сервера
# Примечание: для систем Linux с Python версии 3 используйте python3 при запуске
сервер запуска python manage.py

Приложение начнет работу на локальном порту 8000.

Запустить сервер разработки Django

После создания вебхука нам нужно сделать его общедоступным в Интернете.

Чтобы сделать это в этом примере, мы используем нгрок. Поскольку наш вебхук работает на локальном хосте с портом 8000, нам нужно запустить ngrok на порту 8000.

консоль нгрок

После запуска ngrok на порту 8000 мы видим, что ngrok предоставляет публичный URL-адрес пересылки, который мы можем использовать для создания краулера. В бесплатной версии ngrok эта ссылка автоматически истекает через 2 часа.

Создающий Crawlbase Crawler с вебхуком

Теперь давайте создадим сканер из приборная панель.

Создавать новое Crawler от Crawlbase Crawler приборная панель

Начни с того, что Crawler уникальное имя, например, «test-crawler» в нашем случае, и укажите URL вашего веб-перехватчика в опции обратного вызова. В этом примере URL веб-перехватчика будет публичным URL-адресом пересылки Ngrok, за которым следует адрес маршрута веб-перехватчика.

Отправка URL-адресов на Crawler

Теперь, когда вы создали «тестовый краулер», следующим шагом будет отправка URL-адресов, которые вы хотите, чтобы он сканировал. Для этого вам нужно будет использовать Crawlbase Crawling API, а также два дополнительных параметра: crawler=YourCrawlerName и callback=true. По умолчанию вы можете отправлять до 30 URL-адресов в секунду на Crawler. Если вам необходимо увеличить этот лимит, вы можете запросить изменение, обратившись к Crawlbase поддержки клиентов.

Вот пример на Python, который использует Crawlbase Библиотека Python для отправки URL-адресов на Crawler.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Чтобы установить библиотеку CrawlBase
!pip установить базу данных

# Импорт CrawlingAPI
от база сканирования Импортировать CrawlingAPI

# Инициализация CrawlingAPI с вашим TCP-токеном
api = CrawlingAPI({ токен: 'ВАШ_ТОКЕН_БАЗЫ_КРАНА' })

# Использование случайных URL-адресов Amazon для примера
URL-адреса = [
'https://www.amazon.com/AIRLITE-Microphone-Licensed-Microsoft-Accessories-x/dp/B08JR8HF2G',
'https://www.amazon.com/Cabinet-Stainless-Kitchen-Drawer-Handles/dp/B07SPXKNXN',
'https://www.amazon.com/Mkono-Decorative-Decoration-Organizer-Farmhouse/dp/B08292QMQR',
]

для URL in URL-адреса:
# Асинхронная отправка запроса на сканирование с указанными параметрами
ответ = api.get(url, параметры={'перезвонить': 'правда', «гусеничный»: «тест-краулер»})

# Печать содержимого тела ответа
Распечатать(ответ['тело'])

После запуска кода, Crawling API перенесет все URL-адреса на Crawler очередь.

Пример вывода:

1
2
3
b'{"rid":"d756c32b0999b1c0507e364f"}'
b'{"rid":"455ee207f6907fbd6168ac1e"}'
b'{"rid":"e9eb6ce579dec207e8973615"}'

Для каждого URL, который вы отправляете на Crawler используя Crawling API, вы получите RID (идентификатор запроса). Вы можете использовать этот RID для отслеживания вашего запроса. После того, как Crawler обрабатывает HTML-данные, они будут автоматически отправлены на веб-хук, который вы указали при создании Crawler, сохраняя асинхронность процесса.

The Crawler предлагает API, которые позволяют выполнять различные действия, такие как «Найти», «Удалить», «Пауза», «Возобновить» и т. д. Вы можете узнать о них больше здесь.

Примечание: Общее количество страниц во всех Crawler ожидание очередей ограничено 1 миллионом. Если объединенные очереди превышают этот лимит, ваш Crawler Push временно приостановится, и вы получите уведомление по электронной почте. Push автоматически возобновится, как только количество страниц в очереди упадет ниже 1 миллиона.

Получение данных от Crawler

После отправки URL-адресов на Crawler, Crawler просканирует страницу, связанную с каждым URL-адресом, и отправит ответ с просканированным HTML-кодом в качестве тела в веб-перехватчик.

1
2
3
4
5
6
7
8
9
10
Заголовки:
"Тип содержимого" => "текст/обычный"
«Контент-кодирование» => "gzip"
«Исходный-Статус» => 200
"PC-Статус" => 200
"избавлять" => «RID, который вы получили в push-вызове»
"URL" => "URL, который был просканирован"

Тело:
HTML-код страницы

Формат ответа по умолчанию — HTML. Если вы хотите получить ответ в формате JSON, вы можете передать параметр запроса «format=json» с Crawling API при передаче данных в Crawler. Ответ JSON будет выглядеть так

1
2
3
4
5
6
7
8
9
10
11
12
Заголовки:
"Тип содержимого" => "gzip/json"
«Контент-кодирование» => "gzip"

Тело:
{
"статус_ПК": 200,
"исходный_статус": 200,
"избавлять": «RID, который вы получили в push-вызове»,
"URL": "URL, который был просканирован",
«Тело»: "HTML страницы"
}

Так как мы отправили только 3 URL-адреса на Crawler в предыдущем примере мы получили 3 запроса от Crawler на нашем вебхуке.

Получать данные от Crawler

Как и в webhook_receiver функцию, мы закодировали, чтобы сохранить тело запроса в .txt файл. Мы сможем увидеть весь HTML-контент в этом файле, как здесь.

Извлеченные данные HTML

Получив HTML-код на своем веб-хуке, вы можете извлечь из него все, что угодно, в зависимости от ваших потребностей.

Важное примечание: Вы можете обновить URL-адрес Webhook для вашего Crawler в любое время через ваш Crawlbase Панель приборов. Если Crawler отправляет ответ на ваш вебхук, но ваш сервер не возвращает успешный ответ, Crawler автоматически повторит попытку сканирования страницы и повторной доставки. Эти повторные попытки считаются успешными запросами и будут оплачиваться. Кроме того, если ваш вебхук выйдет из строя, Crawlbase Мониторинговый бот обнаружит его и приостановит Crawler, Crawler возобновится, как только вебхук снова будет в сети. Для любых изменений этих настроек вы можете связаться с Crawlbase техническая поддержка.

Для более полного понимания см. Crawlbase Crawler документации.

Расширенная функциональность обратного вызова с помощью пользовательских заголовков

В дополнение к стандартному механизму обратного вызова, Crawlbase предоставляет дополнительную функцию, которая позволяет вам получать пользовательские заголовки через параметр «callback_headers». Это улучшение позволяет вам передавать дополнительные данные для целей идентификации, облегчая более персонализированную и эффективную интеграцию с вашими системами.

Пользовательский формат заголовка:

Формат пользовательских заголовков следующий:

HEADER-NAME:VALUE|HEADER-NAME2:VALUE2|and-so-on

Для бесперебойной передачи и интерпретации данных крайне важно обеспечить правильное кодирование.

Пример использования

Для этих пар заголовков и значений { ”id”: 123, тип: “etc” }

&callback_headers=id%3A123%7Ctype%3Aetc

Получение заголовков клиентов

Crawler отправит все пользовательские заголовки в разделе заголовков ответа. Вы можете легко получить к ним доступ вместе с вашими просканированными данными.

1
2
3
4
5
6
7
8
9
10
11
12
13
Заголовки:
"Тип содержимого" => "gzip/json"
«Контент-кодирование» => "gzip"
"мне бы" => 123
"тип" => "и т. д"
Тело:
{
"статус_ПК": 200,
"исходный_статус": 200,
"избавлять": «RID, который вы получили в push-вызове»,
"URL": "URL, который был просканирован",
«Тело»: "HTML страницы"
}

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

Заключение

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

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

FAQ

В: Каковы преимущества использования Crawlbase Crawler?

  1. Эффективность: CrawlerАсинхронные возможности позволяют быстрее извлекать данные с веб-сайтов, экономя драгоценное время и ресурсы.
  2. Простота в использовании: Благодаря удобному дизайну, Crawler упрощает процесс отправки URL-адресов и получения просканированных данных через веб-хуки.
  3. Масштабируемость: Crawler может эффективно обрабатывать большие объемы данных, что делает его идеальным для анализа больших веб-сайтов и работы с большими наборами данных.
  4. Обновления в реальном времени: Установив переменную времени прокрутки, вы можете контролировать, когда Crawler отправляет обратно скопированный веб-сайт, обеспечивая доступ в режиме реального времени к самым последним данным.
  5. Принятие решений на основе данных: Crawler предоставляет пользователям ценную информацию из веб-данных, помогая принимать решения на основе данных и получать конкурентное преимущество.

Q: как Crawlbase Crawler сделать веб-скрапинг асинхронным?

Crawlbase Crawler делает веб-скрапинг асинхронным, позволяя пользователям отправлять URL-адреса в Crawler и продолжайте работать, не дожидаясь окончания процесса скрапинга. Когда вы отправляете URL, Crawler добавляет их в очередь и обрабатывает их в фоновом режиме. Он возвращает идентификатор запроса (rid) вместо скопированных данных, так что вы можете отслеживать прогресс, пока Crawler работает. Как только данные готовы, они автоматически отправляются на указанный вами вебхук, что позволяет вам получать результаты без необходимости ждать завершения очистки. Этот асинхронный подход ускоряет процесс и повышает эффективность.

В: Нужно ли мне использовать Python для использования Crawlbase Crawler?

Нет, вам не обязательно использовать исключительно Python, чтобы использовать Crawlbase Crawler, Crawler предоставляет несколько библиотек для различных языков программирования, позволяя пользователям взаимодействовать с ним, используя предпочитаемый ими язык. Независимо от того, насколько вам комфортно работать с Python, JavaScript, Java, Ruby или другими языками программирования, Crawlbase вы охвачены. Кроме того, Crawlbase предлагает API, которые позволяют пользователям получать доступ к CrawlerВозможности , не полагаясь на определенные библиотеки, что делает его доступным для широкого круга разработчиков с различными языковыми предпочтениями и техническим опытом. Эта гибкость гарантирует, что вы можете легко интегрировать Crawler в ваши проекты и рабочие процессы, используя язык, который лучше всего соответствует вашим потребностям.