Gumtree — один из самых популярных сайтов объявлений, где пользователи могут покупать и продавать товары или услуги локально. Если вы ищете автомобили, мебель, недвижимость, электронику или даже работу, Gumtree предлагает миллионы объявлений, которые регулярно обновляются. С более чем 15 миллионами уникальных посетителей в месяц и более чем 1.5 миллионами активных объявлений в любое время, Gumtree предоставляет множество данных, которые можно использовать для сравнения цен, анализа конкурентов или отслеживания тенденций.

В этом блоге мы расскажем вам, как скрапинговать списки поиска Gumtree и отдельные страницы продуктов с помощью Python. Мы также покажем, как хранить данные в CSV-файлах для простого анализа. В конце мы обсудим, как оптимизировать процесс с помощью Crawlbase Smart AI Proxy чтобы избежать таких проблем, как блокировка IP-адреса.

Давай нырнем!

Содержание

  1. Зачем собирать данные Gumtree?
  2. Ключевые данные для извлечения из Gumtree
  3. Настройка среды Python
  • Установка Python и необходимых библиотек
  • Выбор IDE
  1. Скрапинг Gumtree Поисковые списки
  • Проверка HTML на наличие селекторов CSS
  • Написание скребка списков поиска
  • Обработка пагинации в Gumtree
  • Хранение данных в CSV-файле
  • Полный пример кода
  1. Страницы продуктов Scraping Gumtree
  • Проверка HTML на наличие селекторов CSS
  • Написание скрапера страницы продукта
  • Хранение данных в CSV-файле
  • Полный пример кода
  1. Оптимизация скрапинга с помощью Crawlbase Smart AI Proxy
  • Преимущества Crawlbase Smart AI Proxy
  • Интегрируя Crawlbase Smart AI Proxy
  1. Заключение
  2. Часто задаваемые вопросы (FAQ)

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

Сбор данных Gumtree полезен для многих вещей. Как ведущая онлайн-платформа объявлений, Gumtree связывает покупателей и продавцов для широкого спектра продуктов. Вот несколько причин для сбора данных Gumtree:

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

В следующих разделах мы покажем вам, как эффективно извлекать данные из списков поиска Gumtree и страниц продуктов.

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

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

  1. Название продукта: Название продукта обычно находится в главном заголовке листинга. Это самая важная часть.
  2. Цена: Цена листинга — это то, что продавец просит за продукт. Мониторинг цен поможет вам определить рыночную стоимость.
  3. Локация: Местоположение продавца обычно указано в листинге. Это полезно для понимания регионального спроса и предложения.
  4. Описание: Описание товара содержит всю подробную информацию о товаре, его состоянии, характеристиках и технических характеристиках.
  5. URL изображения: URL-адрес изображения важен для визуального представления. Помогает вам понять состояние и привлекательность продукта.
  6. URL-адрес листинга: Прямая ссылка на страницу товара необходима для получения более подробной информации или связи с продавцом.
  7. Дата внесения в список: Дата публикации объявления помогает отслеживать, как долго товар был доступен, и может указывать на спрос.
  8. Имя пользователя продавца: Имя продавца может дать вам представление о его надежности и благонадежности, особенно если вы сравниваете несколько объявлений.

Настройка среды Python

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

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

Сначала убедитесь, что на вашем компьютере установлен Python. Если Python у вас не установлен, вы можете загрузить его с официальный сайт Python. После установки откройте терминал или командную строку и установите необходимые библиотеки с помощью pip.

Вот список основных библиотек, необходимых для парсинга Gumtree:

  • Запросы: Для отправки HTTP-запросов и получения ответов.
  • КрасивыйСуп: Для анализа HTML и извлечения данных.
  • Панды: Для организации и сохранения данных в формате CSV.

Для установки этих библиотек выполните следующую команду:

1
запросы на установку pip beautifulsoup4 pandas

Выбор IDE

Интегрированная среда разработки (IDE) делает кодирование проще и эффективнее. Вот несколько популярных IDE для Python:

  • PyCharm: Мощная полнофункциональная среда IDE с интеллектуальной помощью при написании кода и инструментами отладки.
  • Visual Studio Code: легкий редактор кода с широким набором расширений для разработки на Python.
  • Jupyter Notebook: Идеально подходит для запуска кода небольшими фрагментами, что упрощает тестирование и отладку.

После настройки среды начнем скрапить листинги Gumtree. Далее мы рассмотрим структуру HTML, чтобы найти селектор CSS элементов, содержащих нужные нам данные.

Скрапинг Gumtree Поисковые списки

В этом разделе мы узнаем, как скрафтить списки поиска из Gumtree. Мы проверим структуру HTML, напишем скрапер, обработаем пагинацию и сохраним данные в CSV-файле.

Проверка HTML на наличие селекторов CSS

Чтобы получить данные из Gumtree, нам сначала нужно найти элементы HTML, содержащие информацию. Откройте Developer Tools вашего браузера и изучите листинг.

Скриншот, показывающий результаты поиска Gumtree — HTML-структура

Вот некоторые ключевые факторы выбора:

  • Название: Найдено в <div> тег с атрибутом data-q="tile-title".
  • Цена: Расположен в <div> тег с атрибутом data-testid="price".
  • Локация: Найдено в <div> тег с атрибутом data-q="tile-location".
  • URL: Ссылка на продукт находится внутри <a> теги href атрибут, идентифицированный атрибутом data-q="search-result-anchor".

Мы будем использовать эти CSS-селекторы для извлечения необходимых данных.

Написание скребка списков поиска

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

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
Импортировать Запросы
от bs4 Импортировать КрасивыйСуп

защиту scrape_gumtree_search(URL):
заголовки = {
«Пользовательский агент»: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/91.0.4472.124 Safari/537.36»
}

ответ = запросы.получить(url, заголовки=заголовки)
суп = КрасивыйСуп(ответ.текст, 'html.парсер')
списки = []

для листинг in суп.выбрать('статья[data-q="результат-поиска"]'):
заголовок = список.выберите_один('div[data-q="название-плитки"]').текст.полоска()
цена = список.выберите_один('div[data-testid="цена"]').текст.полоска()
местоположение = список.выберите_один('div[data-q="расположение-плитки"]').текст.полоска()
ссылка = список.выберите_один('a[data-q="результат-поиска-якорь"]')['href']
списки.добавить({
'заглавие': заголовок,
'цена': цена,
'расположение': расположение,
'URL-адрес': f'https://www.gumtree.com{связь}'
})

возвращают объявления

Эта функция извлекает названия, цены, местоположения и URL-адреса со страницы результатов поиска.

Обработка пагинации в Gumtree

Чтобы скрапинговать несколько страниц, нам нужно обработать пагинацию. URL для последующих страниц обычно содержит параметр страницы, например ?page=2. Мы можем модифицировать скрапер для извлечения данных с нескольких страниц.

1
2
3
4
5
6
7
8
9
защиту scrape_gumtree_multiple_pages(base_url, max_pages):
все_списки = []

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

возвращают все_списки

Эта функция перебирает указанное количество страниц и собирает списки с каждой страницы.

Хранение данных в CSV-файле

Для хранения полученных данных мы воспользуемся библиотекой pandas, которая запишет результаты в CSV-файл.

1
2
3
4
5
Импортировать панд as pd

защиту сохранить_в_csv(данные, имя файла):
df = pd.DataFrame (данные)
df.to_csv(имя_файла, индекс=Ложь)

Эта функция берет список объявлений и сохраняет его в CSV-файл с указанным именем файла.

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

Ниже представлен полный код для извлечения результатов поиска Gumtree, обработки пагинации и сохранения результатов в файл CSV.

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 Импортировать КрасивыйСуп
Импортировать панд as pd

защиту scrape_gumtree_search(URL):
заголовки = {
«Пользовательский агент»: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/91.0.4472.124 Safari/537.36»
}

ответ = запросы.получить(url, заголовки=заголовки)
суп = КрасивыйСуп(ответ.текст, 'html.парсер')
списки = []

для листинг in суп.выбрать('статья[data-q="результат-поиска"]'):
заголовок = список.выберите_один('div[data-q="название-плитки"]').текст.полоска()
цена = список.выберите_один('div[data-testid="цена"]').текст.полоска()
местоположение = список.выберите_один('div[data-q="расположение-плитки"]').текст.полоска()
ссылка = список.выберите_один('a[data-q="результат-поиска-якорь"]')['href']
списки.добавить({
'заглавие': заголовок,
'цена': цена,
'расположение': расположение,
'URL-адрес': f'https://www.gumtree.com{связь}'
})

возвращают объявления

защиту scrape_gumtree_multiple_pages(base_url, max_pages):
все_списки = []

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

возвращают все_списки

защиту сохранить_в_csv(данные, имя файла):
df = pd.DataFrame (данные)
df.to_csv(имя_файла, индекс=Ложь)

защиту main():
базовый_url = 'https://www.gumtree.com/search?q=headset'
макс_страницы = 5
списки = scrape_gumtree_multiple_pages(базовый_url, макс_страницы)
сохранить_в_csv(списки, 'gumtree_listings.csv')
Распечатать(f'Scraped {только(списки)} списки и сохранены в gumtree_listings.csv')

if __имя__ == '__главный__':
Основной ()

Этот скрипт извлекает данные из результатов поиска Gumtree для поиска продукта, обрабатывает пагинацию и сохраняет данные в CSV-файле для дальнейшего анализа.

gumtree_listings.csv Снимок:

Снимок файла gumtree_listings.csv

Страницы продуктов Scraping Gumtree

Теперь, когда мы очистили списки поиска, следующим шагом будет очистка отдельных страниц продуктов для получения дополнительной информации. Мы проверим HTML-структуру страниц продуктов, напишем очистку и сохраним данные в CSV-файле.

Проверка HTML на наличие селекторов CSS

Сначала проверьте страницы продуктов Gumtree, чтобы найти элементы HTML, содержащие данные. Откройте страницу продукта в браузере и используйте Developer Tools, чтобы найти:

Скриншот, показывающий страницы продуктов Gumtree — HTML-структура
  • Название продукта: Расположен в <h1> тег с атрибутом data-q="vip-title".
  • Цена: Найдено внутри <h3> тег с атрибутом data-q="ad-price".
  • Описание: Расположен в <p> тег с атрибутом itemprop="description".
  • Имя продавца: Внутри <h2> тег с классом seller-rating-block-name.
  • URL-адрес изображения продукта: Нашел в <img> теги в пределах
    который имеет атрибут data-testid="carousel", с URL-адресом изображения, сохраненным в src атрибутов.

Написание скрапера страницы продукта

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
защиту scrape_gumtree_product_page(URL):
заголовки = {
«Пользовательский агент»: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/91.0.4472.124 Safari/537.36»
}

ответ = запросы.получить(url, заголовки=заголовки)
суп = КрасивыйСуп(ответ.текст, 'html.парсер')

# Извлечение сведений о продукте
заголовок = суп.выберите_один('h1[data-q="vip-title"]').текст.полоска()
цена = суп.выберите_один('h3[data-q="цена-рекламы"]').текст.полоска()
описание = суп.выберите_один('p[itemprop="описание"]').текст.полоска()
имя_продавца = суп.выберите_один('h2.seller-rating-block-name').текст.полоска()
URL_изображений = [img['источник'] для IMG in суп.выбрать('div[data-testid="carousel"] img') if 'источник' in img.attrs]


возвращают {
'заглавие': заголовок,
'цена': цена,
'описание': описание,
'имя_продавца': имя_продавца,
'images_url': URL-адрес_изображения,
'url_продукта': URL-адрес
}

Эта функция отправляет запрос на URL-адрес страницы товара, анализирует HTML-код и извлекает заголовок, цену, описание, имя продавца и URL-адрес изображения товара.

Хранение данных в CSV-файле

После того, как мы очистили данные, мы сохраним их в CSV-файле. Мы можем повторно использовать save_to_csv функция, которую мы использовали ранее для списков поиска.

1
2
3
4
5
Импортировать панд as pd

защиту сохранить_в_csv(данные, имя файла):
df = pd.DataFrame (данные)
df.to_csv(имя_файла, индекс=Ложь)

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

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

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
Импортировать Запросы
от bs4 Импортировать КрасивыйСуп
Импортировать панд as pd

защиту scrape_gumtree_product_page(URL):
заголовки = {
«Пользовательский агент»: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/91.0.4472.124 Safari/537.36»
}

ответ = запросы.получить(url, заголовки=заголовки)
суп = КрасивыйСуп(ответ.текст, 'html.парсер')

# Извлечение сведений о продукте
заголовок = суп.выберите_один('h1[data-q="vip-title"]').текст.полоска()
цена = суп.выберите_один('h3[data-q="цена-рекламы"]').текст.полоска()
описание = суп.выберите_один('p[itemprop="описание"]').текст.полоска()
имя_продавца = суп.выберите_один('h2.seller-rating-block-name').текст.полоска()
URL_изображений = [img['источник'] для IMG in суп.выбрать('div[data-testid="carousel"] img') if 'источник' in img.attrs]


возвращают {
'заглавие': заголовок,
'цена': цена,
'описание': описание,
'имя_продавца': имя_продавца,
'images_url': URL-адрес_изображения,
'url_продукта': URL-адрес
}

защиту сохранить_в_csv(данные, имя файла):
df = pd.DataFrame (данные)
df.to_csv(имя_файла, индекс=Ложь)

защиту main():
product_urls = [
'https://www.gumtree.com/p/bmw/bmw-1-series-118d-sport-5dr-nav-/1488114476',
'https://www.gumtree.com/p/kia/diesel-estate-12-months-mot-px-welcome-nationwide-delivery-available/1483456978',
# Добавьте сюда больше URL-адресов продуктов
]

данные_продукта = []

для URL in URL-адреса_продуктов:
информация_о_продукте = scrape_gumtree_product_page(url)
product_data.append(информация_о_продукте)

сохранить_в_csv(данные_продукта, 'gumtree_product_data.csv')
Распечатать(f'Scraped {только(данные_о_продукте)} страницы продукта и сохранены в gumtree_product_data.csv')

if __имя__ == '__главный__':
Основной ()

Этот скрипт извлекает данные о продукте из отдельных страниц продукта Gumtree и сохраняет извлеченную информацию в файле CSV. Вы можете добавить больше URL-адресов продуктов в product_urls список для извлечения нескольких страниц.

gumtree_product_data.csv Снимок:

Снимок файла gumtree_product_data.csv

Оптимизация скрапинга с помощью Crawlbase Smart AI Proxy

При парсинге таких сайтов, как Gumtree, вы можете столкнуться с ограничениями по скорости или запретами по IP. Для плавного и эффективного парсинга используйте Crawlbase Smart AI Proxy. Эта услуга поможет вам обойти ограничения и улучшить процесс парсинга.

Преимущества Crawlbase Smart AI Proxy

  1. Избегайте блокировки IP-адресов: Crawlbase ротирует IP-адреса, чтобы ваши запросы были анонимными и вас не заблокировали.
  2. Обработка CAPTCHA: Он обрабатывает CAPTCHA-проблемы за вас, чтобы вы могли проводить парсинг без помех.
  3. Более быстрое парсинг: Используя несколько IP-адресов, вы можете быстрее отправлять запросы и быстрее собирать данные.
  4. Geolocation: Выберите прокси-серверы из определенных мест, чтобы извлечь локализованные данные и получить более релевантные результаты.

Интегрируя Crawlbase Smart AI Proxy

Использовать Crawlbase Smart AI Proxy В вашем Gumtree scraper настройте свои запросы на маршрутизацию через прокси. Вот пример того, как это сделать:

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
Импортировать Запросы
от bs4 Импортировать КрасивыйСуп

# Заменять '_USER_TOKEN_' с вашим Crawlbase знак
proxy_url = "http://[электронная почта защищена]: 8012 дюйма
прокси = {"http": proxy_url, "https": proxy_url}

защиту scrape_gumtree_product_page(URL):
ответ = запросы.получить(url, прокси=прокси, проверка=Ложь)

if ответ.status_code == 200:
суп = КрасивыйСуп(ответ.текст, 'html.парсер')

# Извлечение сведений о продукте
заголовок = суп.выберите_один('h1[data-q="vip-title"]').текст.полоска()
цена = суп.выберите_один('h3[data-q="цена-рекламы"]').текст.полоска()
описание = суп.выберите_один('p[itemprop="описание"]').текст.полоска()
имя_продавца = суп.выберите_один('h2.seller-rating-block-name').текст.полоска()
URL_изображений = [img['источник'] для IMG in суп.выбрать('div[data-testid="carousel"] img') if 'источник' in img.attrs]


возвращают {
'заглавие': заголовок,
'цена': цена,
'описание': описание,
'имя_продавца': имя_продавца,
'images_url': URL-адрес_изображения,
'url_продукта': URL-адрес
}
еще:
Распечатать(f"Не удалось получить данные. Код статуса: {response.status_code}")
возвращают Ничто

# Пример использования
if __имя__ == "__основной__":
URL-адрес_продукта = "https://www.gumtree.com/product-page-url" # Заменить фактическим URL-адресом продукта
данные_продукта = scrape_gumtree_страница_продукта(url_продукта)
Распечатать(данные_о_продукте)

В этом фрагменте кода замените '_USER_TOKEN_' с твоим настоящим Crawlbase Токен. Вы можете получить его, создание учетной записи on Crawlbase proxies словарь направляет ваши запросы через Crawlbase Smart AI Proxy, помогая вам избегать блокировок и поддерживать высокую скорость очистки.

Оптимизировав процесс очистки Gumtree с помощью Crawlbase Smart AI Proxy, вы сможете собирать данные более эффективно и обрабатывать большие объемы, не сталкиваясь с типичными проблемами веб-скрапинга.

Оптимизируйте очистку Gumtree с помощью Crawlbase

Извлечение данных Gumtree может быть очень полезным для ваших проектов. В этом блоге мы показали, как извлекать списки поиска и страницы продуктов с помощью Python. Проверяя HTML и используя библиотеку Requests, вы можете извлечь полезные данные, такие как заголовки, цены и описания.

Убедитесь, что процесс очистки проходит гладко, используя такие инструменты, как Crawlbase Smart AI Proxy. Это поможет вам избежать блокировок по IP-адресам и поддерживать высокую скорость сканирования, чтобы вы могли сосредоточиться на получении необходимых данных.

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

📜 Как скрейпить Amazon
📜 Как взломать Walmart
📜 Как скрейпить AliExpress
📜 Как извлечь данные из Houzz
📜 Как соскрести Tokopedia

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

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

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

В. Какие данные я могу извлечь из Gumtree?

Вы можете извлекать различные типы данных из Gumtree, включая названия продуктов, цены, описания, изображения и информацию о продавце. Эти данные могут помочь вам анализировать тенденции рынка или сравнивать цены в разных листингах.

В. Как избежать блокировки во время парсинга?

Чтобы избежать блокировки во время парсинга, рассмотрите возможность использования ротационного прокси-сервиса, например Crawlbase Smart AI Proxy. Это поможет вам управлять IP-адресами, чтобы ваш парсинг выглядел как обычное поведение пользователя. Также используйте задержки между запросами, чтобы снизить вероятность блокировки.