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

GoodFirms имеет более 60,000 XNUMX профилей компаний и подробных списков в различных категориях, таких как разработка программного обеспечения, цифровой маркетинг, разработка мобильных приложений и т. д. Платформа известна своей мощной поисковой функцией и прозрачной системой отзывов, поэтому ее используют компании по всему миру.

В этом блоге мы расскажем вам, как извлечь данные с сайта GoodFirms с помощью Python и Crawlbase Crawling API. Давайте начнем!

Содержание

  1. Зачем собирать данные GoodFirms?
  2. Ключевые данные для извлечения из GoodFirms
  3. Crawlbase Crawling API для GoodFirms Scraping
  4. Подготовка к скрапингу GoodFirms
  • Необходимые инструменты и библиотеки
  • Настройка среды Python
  1. Скрапинг списков поиска GoodFirms
  • Проверка HTML для определения селекторов
  • Написание скребка для поиска GoodFirms
  • Обработка нумерации страниц
  • Хранение извлеченных данных в файле JSON
  • Полный пример кода
  1. Извлечение страниц профилей компаний GoodFirms
  • Проверка HTML для определения селекторов
  • Извлечение ключевых данных из профилей GoodFirms
  • Хранение данных профиля в файле JSON
  • Полный пример кода
  1. Заключение
  2. Часто задаваемые вопросы (FAQ):

Зачем собирать данные GoodFirms?

Сбор данных GoodFirms может помочь компаниям, исследователям и разработчикам. Как надежная платформа с тысячами профилей компаний и подробными обзорами, GoodFirms располагает данными, которые можно использовать разными способами:

  • Анализ конкурентов: Получите представление об услугах, ценах и отзывах клиентов конкурентов.
  • Лидогенерация: Извлечение сведений о компании, таких как контактная информация, услуги и обслуживаемые отрасли.
  • Исследования рынка: Анализируйте тенденции отрасли, рассматривая наиболее эффективные компании и услуги.
  • Создание баз данных: Создайте структурированный репозиторий поставщиков ИТ-услуг для таких приложений, как рекомендательные системы или CRM.
  • Поиск талантов: Узнайте размер команды компании, обслуживаемые отрасли и операционный опыт, чтобы найти возможности для сотрудничества или найма.
  • Сравнительный анализ портфеля: Посмотрите, что делает проекты успешными, в портфолио компаний и тематических исследованиях.
  • Отслеживание тенденций: Изучите предпочтения клиентов и модели спроса на основе подробных обзоров и предлагаемых услуг.
  • Расширение бизнеса: Найдите потенциальные рынки или регионы для нацеливания, проанализировав местоположение компаний и региональные услуги.

С обширным набором данных GoodFirm у вас есть сокровищница данных для принятия решений на основе данных. Автоматизируя процесс извлечения, вы экономите время и получаете доступ к полной и актуальной информации.

Ключевые данные для извлечения из GoodFirms

При скрапинге GoodFirms вам нужно извлечь данные, которые дают представление о компаниях и их услугах. На изображении ниже показаны ключевые точки данных для извлечения:

Изображение, показывающее ключевые данные, которые можно извлечь с сайта Goodfirms

Crawlbase Crawling API для GoodFirms Scraping

Crawlbase Crawling API хорош для парсинга статических сайтов, таких как GoodFirms. Он заботится о прокси, заголовках HTTP и обеспечивает высокую точность данных. С Crawlbase, вы можете извлекать данные из списков поиска GoodFirms и страниц профилей компаний, не беспокоясь о блокировках по IP или проблемах с CAPTCHA.

Сначала установите Crawlbase Библиотека Python. Используйте следующую команду:

1
pip установить crawlbase

После установки вам понадобится API токен. Вы можете получить свой токен, зарегистрировавшись на Crawlbase веб-сайт. Этот токен будет аутентифицировать ваши запросы.

Вот как инициализировать Crawlbase Crawling API в Python:

1
2
3
4
5
6
7
8
9
10
11
от база сканирования Импортировать CrawlingAPI

# Инициализируем Crawlbase Crawling API
crawling_api = CrawlingAPI({токен: 'ВАШ_ТОКЕН_БАЗЫ_КРАНА'})

# Проверьте свою настройку
ответ = crawling_api.get(«https://www.goodfirms.co/companies»)
if ответ["заголовки"]['статус_ПК'] == '200':
Распечатать(«Настройка выполнена успешно! Теперь вы готовы к парсингу GoodFirms».)
еще:
Распечатать(f"Не удалось подключиться. Код статуса: {ответ["заголовки"]['статус_ПК']}")

Примечание: Crawlbase предоставляет два типа токенов. Обычный токен для статических сайтов и JS-токен для JS-рендеренных сайтов. Для GoodFirms обычный токен будет работать нормально. Crawlbase предлагает 1,000 бесплатных запросов для своего Crawling API, Проверить документации больше.

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

Подготовка к скрапингу GoodFirms

Прежде чем начать парсить GoodFirms, вам нужно настроить правильные инструменты и библиотеки. Этот раздел проведет вас через процесс установки требуемых библиотек и настройки среды Python для парсинга.

Необходимые инструменты и библиотеки

Для парсинга GoodFirms вам понадобится:

  1. Питон: Благодаря простоте использования и надежным библиотекам Python является одним из лучших языков для веб-скрапинга.
  2. Crawlbase Библиотека Python: Это облегчит ваш Crawlbase Crawling API звонки.
  3. КрасивыйСуп: Библиотека Python для анализа HTML и извлечения из него данных.

Установка Python и необходимых библиотек

Если у вас не установлен Python, загрузите его здесь: python.org. После установки вы можете использовать pip для установки библиотек. Выполните следующие команды в терминале:

1
2
pip установить crawlbase
Пип установить BeautifulSoup4

Эти библиотеки позволят вам взаимодействовать с Crawlbase Crawling API, анализировать HTML-контент из GoodFirms и эффективно обрабатывать запросы.

Как выбрать правильную IDE для веб-скрапинга

Для написания скрипта скрапинга вы можете использовать любую интегрированную среду разработки (IDE) или текстовый редактор. Вы можете выбрать между некоторыми популярными, такими как Код VS, PyCharm и Ноутбуки Jupyter.

Скрапинг списков поиска GoodFirms

Здесь мы рассмотрим, как извлекать списки поиска из GoodFirms. Это включает в себя проверку HTML, написание скрапера, обработку пагинации и сохранение извлеченных данных в файле JSON.

Проверка HTML для определения селекторов

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

  1. Откройте страницу поиска GoodFirms: Перейти к результатам поиска по категории на GoodFirms.
  2. Осмотрите страницу: Щелкните правой кнопкой мыши на странице и выберите «Проверить» (или нажмите Ctrl + Shift + I).
Скриншот проверки HTML-структуры списков поиска GoodFirms
  1. Определите соответствующие данные: Найдите элементы HTML, содержащие информацию о компании. Общие точки данных включают:
  • Название компании: Обычно находится в пределах <h3> тег с классом firm-name.
  • Локация: Часто в <div> элемент с классом firm-location.
  • Категория услуг: Обычно в <div> элемент, вложенный в firm-content и под девизом класса.
  • Рейтинг: Отображается в <span> тег с классом rating-number.
  • URL-адрес профиля компании: Найдено в <a> тег с классом visit-profile.

После того, как вы определили соответствующие селекторы CSS, мы можем приступить к написанию скрапера.

Написание скребка для поиска GoodFirms

Давайте теперь напишем скрапер для извлечения данных о компании со страницы результатов поиска.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
от bs4 Импортировать КрасивыйСуп
Импортировать JSON
от база сканирования Импортировать CrawlingAPI

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

защиту make_crawlbase_request(URL):
ответ = crawling_api.get(url)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')
возвращают html_контент
еще:
Распечатать(f"Не удалось загрузить страницу. Crawlbase код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

защиту извлечь_подробности_компании(Компания):
имя = компания.выберите_один('h3.название-фирмы').текст.полоска() if компания.выберите_один('h3.название-фирмы') еще ''
местоположение = компания.select_one('div.firm-location').текст.полоска() if компания.выберите_один('div.firm-location') еще ''
категория = компания.выберите_один('div.firm-content > div.tagline').текст.полоска() if компания.выберите_один('div.firm-content > div.tagline') еще ''
рейтинг = компания.select_one('span.рейтинг-номер').текст.полоска() if компания.выберите_один('span.рейтинг-номер') еще «Нет рейтинга»
ссылка = компания.select_one('div.firm-urls > a.visit-profile')['href'] if компания.выберите_один('div.firm-urls > a.visit-profile') еще ''

возвращают {
'Name': имя,
'расположение': расположение,
«Категория»: категория,
'рейтинг': рейтинг,
'профиль_url': связь
}

защиту scrape_goodfirms_search_listings(URL):
html_content = make_crawlbase_request(url)
if html_контент:
возвращают []

суп = КрасивыйСуп(html_content, 'html.парсер')
компании = суп.выбрать('ul.firm-directory-list > li.firm-wrapper')
данные_компании = []

для Компания in компании:
детали = extract_company_details(компания)
company_data.append(подробности)

возвращают данные_компании

# Пример использования
URL = "https://www.goodfirms.co/companies/web-development-agency/london"
данные = scrape_goodfirms_search_listings(url)

Обработка нумерации страниц

GoodFirms использует page параметр в URL для навигации по списку поиска. Чтобы очистить все страницы, нам нужно обработать пагинацию, настроив page Параметр.

Вот как мы можем модифицировать скрапер для обработки пагинации:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
защиту очистить_все_страницы(базовый_url, num_pages=5):
"""Извлеките несколько страниц из результатов поиска GoodFirms."""
все_данные = []

для страница in ассортимент(1, число_страниц + 1):
URL = f"{базовый_url}?страница={страница}"
Распечатать(f"Очистка страницы {страница}... ")
данные = scrape_goodfirms_search_listings(url)
all_data.расширить(данные)

возвращают все_данные

# Пример использования: очистить 5 страниц
базовый_url = "https://www.goodfirms.co/companies/web-development-agency/london"
all_data = scrape_all_pages(base_url, num_pages=5)

Хранение извлеченных данных в файле JSON

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

1
2
3
4
5
6
7
8
защиту сохранить_данные_в_json(данные, имя файла='goodfirms_search_data.json'):
"""Сохраните извлеченные данные в файл JSON."""
открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=4)
Распечатать(f"Данные сохранены в {имя файла}")

# Пример использования
сохранить_данные_в_json(все_данные)

The save_data_to_json Функция сохранит данные в виде файла JSON, что упрощает их загрузку в базу данных или дальнейшую обработку.

Полный пример кода

Вот полный сборщик данных, который объединяет все: от создания запросов до обработки пагинации и хранения данных в файле JSON:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
от bs4 Импортировать КрасивыйСуп
Импортировать JSON
от база сканирования Импортировать CrawlingAPI

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

защиту make_crawlbase_request(URL):
ответ = crawling_api.get(url)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')
возвращают html_контент
еще:
Распечатать(f"Не удалось загрузить страницу. Crawlbase код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

защиту извлечь_подробности_компании(Компания):
имя = компания.выберите_один('h3.название-фирмы').текст.полоска() if компания.выберите_один('h3.название-фирмы') еще ''
местоположение = компания.select_one('div.firm-location').текст.полоска() if компания.выберите_один('div.firm-location') еще ''
категория = компания.выберите_один('div.firm-content > div.tagline').текст.полоска() if компания.выберите_один('div.firm-content > div.tagline') еще ''
рейтинг = компания.select_one('span.рейтинг-номер').текст.полоска() if компания.выберите_один('span.рейтинг-номер') еще «Нет рейтинга»
ссылка = компания.select_one('div.firm-urls > a.visit-profile')['href'] if компания.выберите_один('div.firm-urls > a.visit-profile') еще ''

возвращают {
'Name': имя,
'расположение': расположение,
«Категория»: категория,
'рейтинг': рейтинг,
'профиль_url': связь
}

защиту scrape_goodfirms_search_listings(URL):
html_content = make_crawlbase_request(url)
if html_контент:
возвращают []

суп = КрасивыйСуп(html_content, 'html.парсер')
компании = суп.выбрать('ul.firm-directory-list > li.firm-wrapper')
данные_компании = []

для Компания in компании:
детали = extract_company_details(компания)
company_data.append(подробности)

возвращают данные_компании

защиту очистить_все_страницы(базовый_url, num_pages=5):
все_данные = []

для страница in ассортимент(1, число_страниц + 1):
URL = f"{базовый_url}?страница={страница}"
Распечатать(f"Очистка страницы {страница}... ")
данные = scrape_goodfirms_search_listings(url)
all_data.расширить(данные)

возвращают все_данные

защиту сохранить_данные_в_json(данные, имя файла='goodfirms_search_data.json'):
открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=4)
Распечатать(f"Данные сохранены в {имя файла}")

# Пример использования
базовый_url = "https://www.goodfirms.co/companies/web-development-agency/london"
all_data = scrape_all_pages(base_url, num_pages=5)
сохранить_данные_в_json(все_данные)

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

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
34
35
36
37
38
[
{
"название": «Единая ИнфоТех»,
"расположение": "Лондон, Соединенное Королевство",
"категория": «Стимулирование цифровой трансформации с помощью передовых технологий»,
"рейтинг": "5.0",
"профиль_url": "https://www.goodfirms.co/company/unified-infotech"
},
{
"название": "Сигли",
"расположение": "Лондон, Соединенное Королевство",
"категория": «Фирменное качество»,
"рейтинг": "5.0",
"профиль_url": "https://www.goodfirms.co/company/sigli"
},
{
"название": «Технологии замкнутого цикла»,
"расположение": "Лондон, Соединенное Королевство",
"категория": «Воплощение потрясающих идей в жизнь»,
"рейтинг": "5.0",
"профиль_url": "https://www.goodfirms.co/company/closeloop-technologies"
},
{
"название": "инстинкты",
"расположение": "Лондон, Соединенное Королевство",
"категория": «Создание индивидуальных программных решений»,
"рейтинг": "4.9",
"профиль_url": "https://www.goodfirms.co/company/instinctools"
},
{
"название": «Соляные технологии»,
"расположение": "Лондон, Соединенное Королевство",
"категория": «Разработчики по выбору»,
"рейтинг": "5.0",
"профиль_url": "https://www.goodfirms.co/company/salt-technologies"
},
.... более
]

В следующем разделе мы подробно рассмотрим процесс извлечения данных из страниц профилей компаний.

Извлечение страниц профилей компаний GoodFirms

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

Проверка HTML для определения селекторов

Первый шаг в парсинге профилей компаний — понять структуру страницы профиля. Выполните следующие шаги для проверки страницы:

  1. Открыть страницу профиля компании: Нажмите на ссылку компании в результатах поиска.
  2. Осмотрите страницу: Щелкните правой кнопкой мыши на странице и выберите «Проверить» (или нажмите Ctrl + Shift + I).
Скриншот проверки HTML-структуры страниц профиля компании GoodFirms
  1. Определите соответствующие данные: Найдите элементы HTML, содержащие информацию о компании. Общие точки данных включают:
  • Название компании: Расположен в <h1> тег с атрибутом itemprop="name".
  • Описание: Найдено в <div> с классом profile-summary-text.
  • Почасовая ставка: Расположен в <div> с классом profile-pricing и вложенный <span> тег.
  • Количество работников: Найдено в <div> с классом profile-employees и вложенный <span> тег.
  • Год основания: Часть <div> с классом profile-founded и вложенный <span> тег.
  • Предлагаемые услуги: Извлечено из <ul> с классом services-chart-list, Где <button> теги содержат data-name атрибутов.

Извлечение ключевых данных из профилей GoodFirms

Вот как можно извлечь основные данные со страницы профиля компании GoodFirms с помощью Python, используя Crawlbase Crawling API и Красивый Суп:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
от bs4 Импортировать КрасивыйСуп
от база сканирования Импортировать CrawlingAPI
Импортировать re

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

защиту make_crawlbase_request(URL):
"""Извлеките HTML-содержимое страницы, используя Crawlbase."""
ответ = crawling_api.get(url)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')
возвращают html_контент
еще:
Распечатать(f"Не удалось загрузить страницу. Crawlbase код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

защиту извлечь_подробности_профиля(html_контент):
"""Извлечение подробной информации со страницы профиля компании."""
суп = КрасивыйСуп(html_content, 'html.парсер')

имя = суп.выберите_один('h1[itemprop="имя"]').текст.полоска() if суп.выберите_один('h1[itemprop="имя"]') еще «Н/Д»
описание = re.sub(г'\с+', '', суп.выберите_один('div.profile-summary-text').текст.полоска()) if суп.выберите_один('div.profile-summary-text') еще «Н/Д»
почасовая_ставка = суп.выберите_один('div.profile-pricing > диапазон').текст.полоска() if суп.выберите_один('div.profile-pricing > диапазон') еще «Н/Д»
нет_работников = суп.выберите_один('div.profile-employees > span').текст.полоска() if суп.выберите_один('div.profile-employees > span') еще «Н/Д»
год_основания = суп.выберите_один('div.profile-founded > span').текст.полоска() if суп.выберите_один('div.profile-founded > span') еще «Н/Д»
услуги = [элемент['имя-данных'] для пункт in суп.выбрать(«кнопка списка ul.services-chart»)]

возвращают {
'Name': имя,
'описание': описание,
'почасовая_ставка': почасовая_ставка,
'нет_сотрудников': нет_сотрудников,
'год_основания': год_основания,
'услуги': услуги
}

защиту scrape_company_profiles(profile_urls):
"""Скопировать несколько профилей компаний."""
profiles_data = []

для URL in profile_urls:
Распечатать(f"Профиль соскабливания: {URL}")
html_content = make_crawlbase_request(url)
if html_контент:
подробности = extract_profile_details(html_content)
profiles_data.append(подробности)

возвращают профили_данных

# Пример использования
profile_urls = [
"https://www.goodfirms.co/company/unified-infotech",
"https://www.goodfirms.co/company/sigli"
]

profiles_data = scrape_company_profiles(profile_urls)

Хранение данных профиля в файле JSON

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

1
2
3
4
5
6
7
8
9
10
Импортировать JSON

защиту сохранить_профили_в_json(данные, имя файла='goodfirms_profiles.json'):
"""Сохранение данных профиля компании в файл JSON."""
открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=4)
Распечатать(f"Данные профиля сохранены в {имя файла}")

# Пример использования
сохранить_профили_в_json(профили_данных)

Полный пример кода

Вот полная реализация, включая получение, извлечение и сохранение данных профиля:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
от bs4 Импортировать КрасивыйСуп
Импортировать JSON
от база сканирования Импортировать CrawlingAPI
Импортировать re

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

защиту make_crawlbase_request(URL):
"""Извлеките HTML-содержимое страницы, используя Crawlbase."""
ответ = crawling_api.get(url)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')
возвращают html_контент
еще:
Распечатать(f"Не удалось загрузить страницу. Crawlbase код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

защиту извлечь_подробности_профиля(html_контент):
"""Извлечение подробной информации со страницы профиля компании."""
суп = КрасивыйСуп(html_content, 'html.парсер')

имя = суп.выберите_один('h1[itemprop="имя"]').текст.полоска() if суп.выберите_один('h1[itemprop="имя"]') еще «Н/Д»
описание = re.sub(г'\с+', '', суп.выберите_один('div.profile-summary-text').текст.полоска()) if суп.выберите_один('div.profile-summary-text') еще «Н/Д»
почасовая_ставка = суп.выберите_один('div.profile-pricing > диапазон').текст.полоска() if суп.выберите_один('div.profile-pricing > диапазон') еще «Н/Д»
нет_работников = суп.выберите_один('div.profile-employees > span').текст.полоска() if суп.выберите_один('div.profile-employees > span') еще «Н/Д»
год_основания = суп.выберите_один('div.profile-founded > span').текст.полоска() if суп.выберите_один('div.profile-founded > span') еще «Н/Д»
услуги = [элемент['имя-данных'] для пункт in суп.выбрать(«кнопка списка ul.services-chart»)]

возвращают {
'Name': имя,
'описание': описание,
'почасовая_ставка': почасовая_ставка,
'нет_сотрудников': нет_сотрудников,
'год_основания': год_основания,
'услуги': услуги
}

защиту scrape_company_profiles(profile_urls):
"""Скопировать несколько профилей компаний."""
profiles_data = []

для URL in profile_urls:
Распечатать(f"Профиль соскабливания: {URL}")
html_content = make_crawlbase_request(url)
if html_контент:
подробности = extract_profile_details(html_content)
profiles_data.append(подробности)

возвращают профили_данных

защиту сохранить_профили_в_json(данные, имя файла='goodfirms_profiles.json'):
"""Сохранение данных профиля компании в файл JSON."""
открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=4)
Распечатать(f"Данные профиля сохранены в {имя файла}")

# Пример использования
profile_urls = [
"https://www.goodfirms.co/company/unified-infotech",
"https://www.goodfirms.co/company/sigli"
]

profiles_data = scrape_company_profiles(profile_urls)
сохранить_профили_в_json(профили_данных)

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

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
[
{
"название": «Единая ИнфоТех»,
"описание": «Unified Infotech — 14-летний партнер по цифровой трансформации, удостоенный множества наград. Мы стремимся ускорить рост бизнеса с помощью новых технологий и оптимизированных цифровых процессов. Мы обслуживаем компании из списка Fortune 2019, многонациональные корпорации (МНК), малые и средние предприятия (МСП) и стартапы, выступая в качестве их всесторонних технологических союзников для индивидуальных веб-, мобильных и индивидуальных программных решений. Наша организация гордится своим консалтинговым подходом, определяя себя как «надежного партнера по цифровой трансформации». Мы воплощаем ценности Единого, Уверенного, Надежного и Трансформирующего. Единые в видении и исполнении, мы специализируемся на передовых программных решениях, которые обеспечивают бесшовную интеграцию и успех в цифровую эпоху. Наша уверенность подпитывает каждый проект, гарантируя надежные и инновационные результаты. Надежность лежит в основе наших услуг по цифровой трансформации, предоставляя комплексные решения, которые способствуют устойчивости и росту. С преобразующим духом мы революционизируем отрасли, расширение возможностей бизнеса для достижения непревзойденного роста и инноваций. Мы ваш надежный партнер для: Цифровая трансформация, разработка пользовательского веб-, мобильного и настольного программного обеспечения Цифровой клиентский опыт — исследования и дизайн UX/UI SaaS и разработка программного обеспечения ИТ-консалтинг и увеличение штата Модернизация программного обеспечения и миграция в облако Данные и аналитика Облачная инженерия Мы обслуживаем следующие отрасли: SaaS и цифровые платформы Образование и публикации Фармацевтика, здравоохранение и науки о жизни Финтех, банковское дело, финансовые услуги Страхование Розничная торговля, электронная коммерция Цепочка поставок Речь и перевод Строительство и недвижимость Автомобильная промышленность Медиа и развлечения Путешествия и гостеприимство Почему стоит выбрать Unified Infotech? Мы — отмеченная многочисленными наградами глобальная компания цифровой трансформации. Мы помогаем предприятиям значительно улучшить бизнес-результаты с помощью индивидуального цифрового опыта, разработки программного обеспечения, облачной инженерии, аналитики данных, ИТ-консалтинга и консультационных услуг. Аккредитация Deloitte Technology Fast 500 BBB и рейтинг A+ (2019) 2019 Рейтинг на GoodFirms 50 Рейтинг Clutch Certified: «Отличное место для работы»,
"почасовая_ставка": «$50 - $99/час»,
"нет_сотрудников": "50 - 249",
"год_основания": "2010",
"услуги": [
«Веб-разработка»,
"Разработка программного обеспечения",
«Веб-дизайн (UI/UX)»,
«Разработка мобильных приложений»,
«Развитие электронной коммерции»
]
},
{
"название": "Сигли",
"описание": «Sigli — динамичная компания по разработке программного обеспечения, специализирующаяся на разработке цифровых продуктов и цифровой трансформации. Мы преуспеваем в воплощении инновационных идей в реальность, предоставляя комплексные решения, охватывающие весь цикл разработки, от концепции до развертывания. Наше пристальное внимание к предоставлению высококачественных, масштабируемых и перспективных цифровых продуктов позволяет нам эффективно преодолевать сложности цифровой трансформации. В дополнение к нашим основным услугам по разработке мы уделяем особое внимание решениям в области искусственного интеллекта и данных, помогая компаниям использовать передовую аналитику и интеллектуальные системы для стимулирования инноваций и эффективности. Модернизируя операции и улучшая качество обслуживания клиентов, мы гарантируем, что наши клиенты останутся конкурентоспособными в постоянно меняющемся цифровом ландшафте. Опыт нашей команды в сочетании с приверженностью использованию новейших технологий и передовых практик позиционирует Sigli как надежного партнера для компаний, стремящихся к процветанию в цифровую эпоху. Мы гордимся тем, что сертифицированы по стандарту ISO/IEC 27001, гарантируя, что данные и операции наших клиентов защищены и соответствуют требованиям. В Sigli мы считаем, что для успешного проекта требуется гармоничное сочетание передовых технологий, профессионального и адаптивного Команда, взаимное уважение и тщательное планирование. Наш клиентоориентированный подход подкреплен прозрачностью, ответственностью и неустанной приверженностью обслуживанию. Мы общаемся открыто, берем на себя ответственность за свою работу и всегда ставим удовлетворение клиента в приоритет».,
"почасовая_ставка": «$50 - $99/час»,
"нет_сотрудников": "50 - 249",
"год_основания": "2015",
"услуги": [
"Разработка программного обеспечения",
«Веб-разработка»,
«Большие данные и бизнес-аналитика»,
"Искусственный интеллект",
«Разработка мобильных приложений»,
«Тестирование услуг»,
«DevOps»
]
}
]

Заключение

Анализ данных GoodFirms может дать вам представление о компаниях, услугах и тенденциях в отрасли. Используйте Crawlbase Crawling API и Python для сбора и организации списков поиска и профилей компаний. Эти данные могут быть использованы для исследования рынка, анализа конкурентов или решений на основе данных.

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

Вот еще несколько руководств, которые могут вас заинтересовать:

Как скрейпить суперстраницы
Как сканировать желтые страницы
Как извлечь данные о недвижимости из Zillow
Как собирать вопросы Stackoverflow

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

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

В. Какие этические соображения следует учитывать при парсинге GoodFirms?

Скрапинг — мощный инструмент, но всегда следуйте условиям обслуживания и этическим принципам GoodFirm. Не делайте чрезмерных запросов, которые могут перегрузить их серверы, уважайте их файл robots.txt и используйте данные, не нарушая права интеллектуальной собственности.

В. Как мне справиться с потенциальными проблемами, такими как капчи или блокировки, при парсинге GoodFirms?

GoodFirms — статический сайт, поэтому капчи или блоки встречаются редко. Но для обеспечения плавного парсинга вы можете использовать Crawlbase Crawling API для таких функций, как ротация IP-адресов и повторные запросы, которые могут обойти ограничение скорости и поддерживать постоянный доступ.

В. Какую информацию могут получить компании, изучая GoodFirms?

Профили компании, предлагаемые услуги, отзывы клиентов, почасовые ставки, количество сотрудников, годы основания. Используйте эти данные для сравнения с конкурентами, отраслевыми тенденциями и создания целевого охвата.