Baidu, более известный как «китайский Google», — ведущая поисковая система, которой пользуется большинство людей в Китае. Если вас интересуют такие вещи, как рыночные тенденции, SEO-исследования или просто интересуют популярные в Китае тренды, получение данных от Baidu практически обязательно.

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

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

Содержание

Анализ результатов поиска Baidu: обзор

Мы объединим два основных инструмента для извлечения данных из Baidu, обычно называемого китайско-английской поисковой системой: Crawlbase и BeautifulSoup.

CrawlbaseАвтора Crawling API Позволяет избегать блокировок при сканировании веб-сайтов. Сервис использует все необходимые методы, такие как ротация IP-адресов, обработка CAPTCHA и имитация реальных браузеров, для обеспечения успеха проекта. Это означает, что вам не нужен сложный парсер, имитирующий поведение человека. Вам нужно отправить URL-адрес Crawlbase и получите полный HTML-ответ.

Получив HTML, мы обратимся к BeautifulSoup для парсинга. Это библиотека Python, которая упрощает парсинг веб-страниц, позволяя быстро и легко находить и извлекать нужную информацию. Вы можете выбрать любые нужные теги или классы, почти как с помощью привычных селекторов CSS. Это делает скрипт простым и понятным для всех.

С помощью создаваемого нами парсера мы сосредоточимся на трёх ключевых областях страницы результатов поиска Baidu. Давайте рассмотрим это. пример URL-адреса Baidu.

Откройте страницу в браузере и осмотрите следующие элементы (щелкните правой кнопкой мыши → Проверить):

  • Результаты поиска: Вы можете найти это внутри div с классом title-box_4YBsjс последующим h3 тег с классом t.
Изображение инструментов разработчика браузера Chrome с выделенным элементом результата поиска.
  • Похожие Запросы: Они находятся внутри table с классом rs-table_3RiQc, перемещаясь по его tr и td теги для получения ссылок.
Изображение инструментов разработчика браузера Chrome с выделенным элементом связанных поисковых запросов.
  • Пагинация: Чтобы загрузить больше результатов, мы увеличиваем параметр запроса pn в URL-адресе на число, кратное 10 (например, pn=10, pn=20И т.д.).

Настройка Crawlbase и среда кодирования

  • Перейдите на Crawlbase чтобы создать учетную запись и войти в систему.
  • Ваши первые 1,000 запросов будут бесплатными. Если вы хотите получить ещё 9,000 запросов бесплатно, просто добавьте ваши платежные реквизиты до использования любого из бесплатных начальных кредитов.
  • Получите свой ключ API или Обычный токен запроса. Мы будем использовать его для сканирования Baidu.

Затем настройте среду Python:

  • Установите Python 3 установлен.
  • Откройте терминал и установите необходимые библиотеки:
1
Pip запрашивает установку beautifulsoup4

Вот и всё. Теперь вы готовы приступить к написанию скрапера.

Как сканировать и извлекать результаты поиска Baidu

Теперь ваши основные инструменты готовы. Давайте создадим простой скрипт для извлечения HTML-кода с помощью Crawlbase. Это можно сделать с помощью следующих шагов:

Шаг 1: Обрабатывайте блоки и CAPTCHA с помощью Crawlbase

Создайте новый файл с именем crawling.pyи добавьте следующий код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
от запросы.исключения Импортировать ЗапросИсключения
Импортировать JSON
Импортировать Запросы

защиту ползать(URL: ул) -> ул:
API_ТОКЕН = "<Crawlbase Обычные запросы токенов>" #<-- замените на ваш реальный токен
API_ENDPOINT = "https://api.crawlbase.com/"

параметры = {
"токен": API_ТОКЕН,
"URL": URL-адрес
}

ответ = запросы.получить(API_ENDPOINT, параметры=параметры)
ответ.raise_for_status()

json_string_content = ответ.текст
json_data = json.loads(json_string_content)

if json_data["исходный_статус"] != 200:
повышение Исключение[f"Невозможно сканировать"{URL}'"]

возвращают json_data[«Тело»]

Что делает этот скрипт:

  • Определяет crawl() функция, которая принимает целевой URL.
  • Пользы requests чтобы отправить запрос GET на Crawlbase API.
  • Принимает ваш Обычный токен запроса для аутентификации запроса. Так что не забудьте его изменить.
  • Проверяет, что исходная страница вернула 200 ОК Статус.
  • Возвращает полное HTML-содержимое текста ответа.

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

Шаг 2: Извлечение HTML с помощью Beautifulsoup

Мы будем использовать BeautifulSoup для извлечения необходимых данных со страницы результатов поиска Baidu для этого шага, которые берутся из необработанного HTML-кода, полученного с помощью Crawlbase.

Итак, создайте файл с названием scraping.py и добавьте следующий код:

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
28
29
30
31
32
33
от bs4 Импортировать КрасивыйСуп
защиту scrape_html(HTML: ул) -> ДИКТ:
суп = КрасивыйСуп(html, 'html.парсер')

название = суп.название.строка if суп.название еще Ничто
поиск_ввод = суп.найти('вход', {'Name': 'wd'})
if поиск_ввод:
поисковый_запрос = поисковый_ввод.получить('ценность', '')
результаты_поиска = []
для результат in суп.выбрать('div.title-box_4YBsj h3.t'):
заголовок = результат.текст
url = результат.найти('а')['href']
результаты_поиска.добавить({
'заглавие': заголовок,
'URL-адрес': URL-адрес
})

связанные_поиски = []
для результат in суп.выбрать('table.rs-table_3RiQc tr td a'):
заголовок = результат.текст
URL = результат['href']
связанные_поиски.прикрепить({
'заглавие': заголовок,
'URL-адрес': URL-адрес
})
page_data = {
'заглавие': заголовок,
'searchQuery': поисковый_запрос,
'Результаты поиска': результаты_поиска,
«связанные поисковые запросы»: связанные_поиски
}

возвращают страница_данных

Что делает этот скрипт:

  • Анализирует HTML с помощью BeautifulSoup.
  • Извлекает следующие данные:
    • Страница <title> тег.
    • Поисковый запрос из поля ввода с названием «wd».
    • Заголовки результатов поиска и URL-адреса из div.title-box_4YBsj h3.t.
    • Похожие ссылки поиска из table.rs-table_3RiQc tr td a.
  • Возвращает данные в понятном, структурированном формате, который вы можете использовать или сохранить.

Шаг 3: Объедините свои сценарии

Теперь, когда у нас готовы скрипты сканирования и извлечения данных, пришло время собрать все воедино и посмотреть результаты.

Сохраните следующее в файле с именем main.py:

1
2
3
4
5
6
7
от ползком Импортировать ползать
от выскабливание Импортировать scrape_html
Импортировать JSON
html = сканировать("https://www.baidu.com/s?ie=utf-8&wd=苹果%20iPhone")
данные = scrape_html(html)
json_string = json.dumps(data, ensure_ascii=Ложь, отступ=2)
Распечатать(json_string)

Что делает этот скрипт:

  • Использует ваш crawl() Функция для извлечения HTML-контента результатов поиска Baidu по запросу «苹果 iPhone».
  • Передает HTML-код scrape_html() для извлечения структурированных данных.
  • Преобразует результат в наглядно оформленный JSON и отображает его в консоли.

Шаг 4: Запуск основного скрипта

На терминале выполните:

1
основной файл Python

Вы должны увидеть что-то вроде этого:

Изображение, демонстрирующее структурированный вывод JSON страницы результатов поиска Baidu (SERP).

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

Краткие советы по сбору результатов поиска Baidu

Вот несколько кратких советов, которые следует иметь в виду, продолжая разработку после настройки поискового парсера Baidu с помощью Python. Crawlbaseи BeautifulSoup:

  • Crawlbase Ограничения ставок: Просто помните о предельной частоте запросов по умолчанию — 20 запросов в секунду, чтобы избежать ошибок 429. Если вам нужно отправить больше запросов, чем установлено по умолчанию, свяжитесь с нами. Crawlbase Служба поддержки.
  • 5XX коды pc_status: Все коды ошибок 5XX исправляются бесплатно. Если вы столкнулись с такой ошибкой, это обычно означает, что ваш URL заблокирован, не отвечает или в настоящее время недоступен. К счастью, вы можете легко повторить попытку, поскольку это бесплатно.
  • Проверка HTML с помощью DevTools: Всегда возвращайтесь на HTML-страницу и проверяйте элементы на наличие изменений в CSS-классах или ошибок в вашем парсере. Это распространённая проблема, но её можно быстро решить.
  • Попробуйте другие запросы: Измените URL-адрес поиска Baidu, протестируйте его с другими ключевыми словами и посмотрите, как изменится структура.
  • Экспортируйте свои данные: Запишите вывод в .json or .csv файл с помощью json.dump() or csv.DictWriter() для дальнейшего использования.

Если вы еще этого не сделали, Подписаться на Crawlbase чтобы получить бесплатный API-токен и начать масштабное исследование сети, не подвергаясь блокировкам.

Часто задаваемые вопросы (FAQ):

В: Что такое Crawlbase, и как это помогает при веб-скрапинге Baidu?

Crawlbase — это платформа, ориентированная преимущественно на сбор веб-данных. Она берет на себя все технические аспекты парсинга, такие как изменение IP-адресов, обход защиты от ботов и возврат необработанной веб-страницы в виде чистого HTML-кода, который можно легко использовать в коде. Вам больше не нужно беспокоиться о распространённых препятствиях при парсинге.

В: Могу ли я парсить Baidu с помощью Python?

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

В: Зачем использовать BeautifulSoup для парсинга поисковой системы Baidu?

BeautifulSoup разработан для извлечения данных с веб-страниц. Даже новичкам будет легко с ним работать. Он также популярен для обработки как чистого, так и сложного HTML-кода, например, результатов поиска.

В: Нужно ли использовать рендеринг JavaScript для парсинга Baidu?

Обычно основной контент Baidu загружается без дополнительных скриптов. Однако, если вы встретите страницу, которая требует их, Crawlbase предлагает вариант JavaScript для обработки сайтов, требующих загрузки в стиле браузера.