Это руководство научит вас, как скрейпить Craigslist.com. Крейг Ньюмарк запустил сайт в 1995 году как список адресов электронной почты для обмена событиями в районе залива Сан-Франциско. К 1996 году он превратился в веб-сайт и продолжал расти, став крупнейшей платформой объявлений в Соединенных Штатах. Теперь он обслуживает людей из 70 стран и получает более 20 миллиардов посещений каждый месяц.

Посещения Craigslist.com в 2024 г.

Image Source:

Каждый месяц Craigslist получает более 80 миллионов объявлений в различных категориях, включая работу, жилье, товары на продажу, услуги и общественные мероприятия. Несмотря на то, что Craigslist начинался в Соединенных Штатах и ​​Канаде, он быстро стал глобальным. Сегодня это популярное место для поиска всего: от работы и жилья до услуг и местных мероприятий.

Статистика Craigslist.com

Image Source

В этой статье вы узнаете, как использовать JavaScript и Crawlbase Crawling API для скрапинга листингов продуктов с Craigslist. Вы узнаете, как скрапинговать важные данные, такие как цены на продукты, названия, местоположения и URL-адреса не сталкиваясь ни с какими блокировками и ограничениями.

Содержание

  1. Установите необходимые библиотеки
  2. Настройте проект
  3. Извлечение HTML-данных Craigslist.com из списков поиска
  4. Извлечь название продукта Craigslist.com в формате JSON
  5. Соскребите Craigslist.com Цена продукта
  6. Очистите Craigslist.com Местонахождение продукта
  7. Соскребите URL-адрес продукта Craigslist.com
  8. Наконец, завершите код
  9. Сохранить данные Craigslist в файл CSV

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

Убедитесь, что на вашем компьютере установлен Node.js для запуска JavaScript для веб-скрейпинга. Изучите основы JavaScript, такие как переменные, функции, циклы и простые манипуляции веб-страницами, поскольку они необходимы для нашего скрипта скрапинга. Новички могут ознакомиться с руководствами для начинающих на таких сайтах, как Mozilla Developer Network (MDN) или W3Schools, чтобы начать.

Для эффективного извлечения данных с Craigslist.com вам понадобится токен API от Crawlbase. Создайте бесплатную учетную запись регистрацией на их сайте, перейдите в настройки своего аккаунта и найдите свои API токены. Эти токены работают как ключи, предоставляя доступ к функциям Crawling API, что делает сбор данных простым и эффективным.

2. Настройте проект

Шаг 1: Создайте новую папку проекта:
Откройте свой терминал и введите mkdir craigslist-scraper чтобы создать новую папку для вашего проекта.

1
mkdir craigslist-скребок

Шаг 2: Перейдите в папку проекта:
Enter cd craigslist-scraper для перемещения в только что созданную папку, что упростит управление файлами проекта.

1
cd craigslist-scraper

Шаг 3: Создайте файл JavaScript:
Тип touch index.js для создания нового файла с именем index.js в папке вашего проекта. Вы можете выбрать другое имя, если предпочитаете.

1
сенсорный index.js

Шаг 4: Добавьте Crawlbase Пакет:
Установить Crawlbase Библиотека Node для вашего проекта, запустив npm install crawlbase в вашем терминале. Эта библиотека упрощает подключение к Crawlbase Crawling API, облегчая сбор данных с Craigslist.

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

Шаг 5: Установка Fs, JSdom, Json2Csv:
Установите fs для взаимодействия с файловой системой, jsdom для анализа HTML и json2csv для преобразования JSON в CSV. Эти модули обеспечивают основные функции в вашем проекте по сбору данных Craigslist, облегчая файловые операции, манипуляции с DOM и преобразование форматов данных.

1
npm установить fs jsdom json2csv

Выполнив эти шаги, вы будете готовы приступить к созданию своего инструмента для сбора данных Craigslist!

3. Извлечение HTML-данных Craigslist.com из списков поиска

После того, как вы получили учетные данные API и установили Crawlbase Библиотека Node.js для веб-скрейпинга, пора начинать работу над файлом «touch.js». Выберите страницу поиска Craigslist, с которой вы хотите скрейпнуть данные. В файле «touch.js» используйте Crawlbase Crawling API вместе с библиотекой fs для извлечения информации с выбранной вами страницы Craigslist. Обязательно замените URL-адрес заполнителя в коде на фактический URL-адрес страницы, которую вы собираетесь извлечь.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Const { CrawlingAPI знак равно требовать('crawlbase'),
фс = требовать('фс'),
crawlbaseToken = 'ВАШ_ТОКЕН_БАЗЫ_КРАНА',
API = новый CrawlingAPI({ знак: crawlbaseToken }),
craigslistPageURL = 'https://chicago.craigslist.org/search/rea?hasPic=1#search=1~галерея~0~0';

пчелы.получить(URL-адрес страницы craigslist).тогда(handleCrawlResponse).поймать(handleCrawlError);

функция handleCrawlResponse(ответ) {
if (ответ.код состояния === 200) {
фс.writeFileSync('ответ.html', ответ.тело);
консоль.журнал(«HTML сохранен в response.html»);
}
}

функция handleCrawlError(ошибка) {
консоль.ошибка(ошибка);
}

Пояснение к коду:

Этот код JavaScript демонстрирует, как использовать библиотеку fs для извлечения данных из определенного URL-адреса через запрос HTTP GET. Уникальность кода заключается в его интеграции с Crawlbase Crawling API, который улучшает и позволяет проводить масштабный веб-скрапинг. Теперь давайте разберем код подробнее.

Требуемые библиотеки:

Для работы скрипта требуются следующие библиотеки:

  • база данных сканирования: Эта библиотека облегчает веб-скрапинг с помощью Crawlbase Crawling API.
  • фс: Это модуль файловой системы Node.js, используемый для файловых операций.
1
2
Const { CrawlingAPI знак равно требовать('crawlbase'),
фс = требовать('фс');

инициализации:

  • CrawlingAPI и fs импортируются из соответствующих библиотек.
  • Токен для доступа к Crawlbase API предоставляется как crawlbaseToken.
  • Экземпляр CrawlingAPI создается с предоставленным токеном.
  • URL-адрес страницы списка поиска Craigslist, подлежащей считыванию, хранится в craigslistPageURL.
1
2
3
Const crawlbaseToken = 'ВАШ_ТОКЕН_БАЗЫ_КРАНА',
API = новый CrawlingAPI({ знак: crawlbaseToken }),
craigslistPageURL = 'https://chicago.craigslist.org/search/rea?hasPic=1#search=1~галерея~0~0';

Crawling Процесс:

Метод api.get() вызывается с URL-адресом страницы Craigslist в качестве аргумента для запуска процесса сбора данных.

  • Если запрос выполнен успешно, вызывается функция handleCrawlResponse для обработки ответа.
  • Если в процессе сканирования возникает ошибка, вызывается функция handleCrawlError для ее обработки.
1
пчелы.получить(URL-адрес страницы craigslist).тогда(handleCrawlResponse).поймать(handleCrawlError);

Обработка ответа:

В функции handleCrawlResponse:

  • Он проверяет, равен ли код статуса ответа 200 (что указывает на успешный запрос).
  • В случае успеха он записывает тело ответа HTML в файл с именем «response.html» с помощью fs.writeFileSync().
  • На консоль выводится сообщение об успешном сохранении HTML-кода.
1
2
3
4
5
6
функция handleCrawlResponse(ответ) {
if (ответ.код состояния === 200) {
фс.writeFileSync('ответ.html', ответ.тело);
консоль.журнал(«HTML сохранен в response.html»);
}
}

Обработка ошибок:

В функции handleCrawlError:

  • Любые ошибки, возникающие в процессе сканирования, регистрируются в консоли для отладки.
1
2
3
функция handleCrawlError(ошибка) {
консоль.ошибка(ошибка);
}

Вывод HTML:

HTML-ответ Craigslist

4. Извлеките название продукта с Craigslist.com в формате JSON

В этом разделе мы рассмотрим, как извлечь ценные данные со страниц поиска Craigslist. Данные, которые мы хотим извлечь, включают такие элементы, как названия продуктов, цены, местоположения и URL-адреса. Для выполнения этой задачи мы создадим пользовательский JavaScript-скрейпер, используя две основные библиотеки: jsdom, которая обычно используется для анализа и обработки HTML-документов, и fs, которая упрощает файловые операции. Скрипт ниже проанализирует HTML-структуру страниц результатов поиска Craigslist (которую мы получили в предыдущем примере в файле response.html), соберет соответствующую информацию и организует ее в массив JSON.

Соскребите название продукта Craigslist.com

Чтобы извлечь название продукта, используйте инструменты разработчика браузера, чтобы найти место, где представлен каждый листинг. Определите конкретный раздел веб-страницы, содержащий название продукта. После этого используйте селекторы JSdom, такие как .querySelector, чтобы точно указать этот элемент на основе его класса. Используйте метод .textContent() для извлечения текстового содержимого и используйте .trim(), чтобы убедиться, что оно чистое.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Const фс = требовать('фс'),
{ JSDOM знак равно требовать('jsdom'),
html = фс.readFileSync('ответ.html', 'Utf8'),
дом = новый JSDOM(html),
документ = дом.окно.документ,
продукты = [],
родительскийЭлемент = документ.селектор запросов('ol.cl-статические-результаты-поиска');

if (родительскийЭлемент) {
Const первыйЭлемент = родительскийЭлемент.селектор запросов('li.cl-статический-результат-поиска');

if (первыйЭлемент) {
позволять текущийЭлемент = первыйЭлемент;
в то время как (текущийЭлемент) {
Const продукт = {};
продукта.название = текущийЭлемент.селектор запросов('.заголовок').текстСодержание.отделка();
продукции.протолкнуть.(товар);
текущийЭлемент = текущийЭлемент.следующийЭлементБрат;
}
}
}

5. Соберите данные о цене продукта на Craigslist.com:

Соскребите цену продукта Craigslist

В этом разделе мы рассмотрим, как извлечь цены на товары из просканированного HTML-кода страницы объявлений Craigslist.

1
продукта.цена = текущийЭлемент.селектор запросов('.цена').текстСодержание.отделка();

6. Соберите данные о местоположении продукта на Craigslist.com:

Определить местоположение продукта на Craigslist

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

1
продукта.Локация = текущийЭлемент.селектор запросов('.расположение').текстСодержание.отделка();

7. Соберите URL-адрес продукта Craigslist.com:

Собрать URL-адрес продукта Craigslist

Как и в предыдущих шагах, мы воспользуемся пакетом JSdom для анализа HTML-контента и поиска необходимой информации.

1
продукта.URL = текущийЭлемент.селектор запросов('а').получить атрибут('href');

8. Наконец, завершите код.

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
Const фс = требовать('фс'),
{ JSDOM знак равно требовать('jsdom'),
html = фс.readFileSync('ответ.html', 'Utf8'),
дом = новый JSDOM(html),
документ = дом.окно.документ,
продукты = [],
родительскийЭлемент = документ.селектор запросов('ol.cl-статические-результаты-поиска');

if (родительскийЭлемент) {
Const первыйЭлемент = родительскийЭлемент.селектор запросов('li.cl-статический-результат-поиска');

if (первыйЭлемент) {
позволять текущийЭлемент = первыйЭлемент;
в то время как (текущийЭлемент) {
Const продукт = {};
продукта.название = текущийЭлемент.селектор запросов('.заголовок').текстСодержание.отделка();
продукта.цена = текущийЭлемент.селектор запросов('.цена').текстСодержание.отделка();
продукта.Локация = текущийЭлемент.селектор запросов('.расположение').текстСодержание.отделка();
продукта.URL = текущийЭлемент.селектор запросов('а').получить атрибут('href');
продукции.протолкнуть.(товар);
текущийЭлемент = текущийЭлемент.следующийЭлементБрат;
}
}
}

Const jsonData = JSON.стягивать(продукты, нуль, 2);
фс.writeFileSync(«продукты.json», jsonData);
консоль.журнал(«Данные JSON сохранены в файле products.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
68
69
70
71
72
73
74
75
76
77
78
79
80
[
{
"заглавие": "Продается коммерческая недвижимость в Мелроуз-парке",
"цена": "0 $",
"расположение": «Аренда с правом выкупа»,
"URL": "https://chicago.craigslist.org/nch/reo/d/melrose-park-melrose-park-commercial/7732627311.html"
},
{
"заглавие": "2-комнатный трейлер в аренду",
"цена": "675 $",
"расположение": "165-я и Кеннеди",
"URL": "https://chicago.craigslist.org/nwi/reo/d/hammond-bedroom-trailer-for-rent/7732856568.html"
},
{
"заглавие": «Дом в деревне Баррингтон»,
"цена": "439,000 $",
"расположение": "северо-западные пригороды",
"URL": "https://chicago.craigslist.org/nwc/reo/d/barrington-barrington-village-home/7734168844.html"
},
{
"заглавие": «Доступный Гонолулу, низкий первоначальный взнос, низкий процент предполагаемого кредита»,
"цена": "0 $",
"расположение": "Привет - Гонолулу",
"URL": "https://chicago.craigslist.org/nwi/reo/d/honolulu-affordable-honolulu-low-down/7730954791.html"
},
{
"заглавие": "Дом в стиле ранчо с 2 спальнями и 1 ванной",
"цена": "239,900 $",
"расположение": "Бенсенвилл/Элмхерст",
"URL": "https://chicago.craigslist.org/wcl/reo/d/bedroom-bath-ranch-house/7731012362.html"
},
{
"заглавие": "2645 W Winnemac Ave | двухквартирный дом на продажу",
"цена": "780,000 $",
"расположение": «Линкольн-сквер»,
"URL": "https://chicago.craigslist.org/chc/reb/d/chicago-2645-winnemac-ave-two-flat-for/7734138150.html"
},
{
"заглавие": «6 акров земли возле озера Люцерн в северной части Висконсина»,
"цена": "44,900 $",
"расположение": "Крэндон, Висконсин",
"URL": "https://chicago.craigslist.org/chc/reb/d/crandon-acres-near-lake-lucerne-in/7734135193.html"
},
{
"заглавие": «5 акров земли// $140 тыс.// Джонатан Ноллс// Уодсворт, Иллинойс»,
"цена": "140,000 $",
"расположение": "Уодсворт",
"URL": "https://chicago.craigslist.org/nch/reo/d/zion-acres-of-land-140k-jonathan-knolls/7734135008.html"
},
{
"заглавие": «4 спальни, 2 ванные комнаты, налоги всего 2500 долларов в год. Большой частный участок, уединенный»,
"цена": "229,000 $",
"расположение": "Крэствуд",
"URL": "https://chicago.craigslist.org/sox/reo/d/robbins-bed-bathtaxes-only-2500-yrlarge/7732451653.html"
},
{
"заглавие": «Склад коммерческий/жилой, большой огороженный двор, 3 отсека с отоплением, 299 тыс. долларов США»,
"цена": "299,000 $",
"расположение": «Дубовая лужайка»,
"URL": "https://chicago.craigslist.org/sox/reo/d/hometown-warehouse-commercial/7731255443.html"
},
{
"заглавие": «Частный закрытый участок. 4 спальни, 3 ванные комнаты, гараж площадью 2000 кв. футов. Обязательно посетите»,
"цена": "649,000 $",
"расположение": "Деньги - 60449",
"URL": "https://chicago.craigslist.org/sox/reo/d/private-gated-subdivision4bed/7725442192.html"
},
{
"заглавие": «9 акров, комм./пром., многоцелевое использование, хранение грузовиков 300/400, ремонт дизельных двигателей, продажа»,
"цена": "1,500,000 $",
"расположение": «Парк университета Мони»,
"URL": "https://chicago.craigslist.org/sox/reo/d/park-forest-acrescomm-indmany-uses/7725442644.html"
},
{
"заглавие": «Здание, склад, высокие потолки, все переделано, обязательно к просмотру, склад-склад»,
"цена": "299,000 $",
"расположение": "Мидлотиан",
"URL": "https://chicago.craigslist.org/sox/reo/d/midlothian-building-warehouse-high/7725443018.html"
}
]

9. Сохраните данные Craigslist.com в файл CSV

Перед запуском кода ниже убедитесь, что вы установили пакет json2csv, запустив npm install json2csv. Этот скрипт считывает файл products.json, который вы извлекли на предыдущем шаге, указывает поля для включения в CSV, преобразует данные JSON в формат CSV, а затем записывает данные CSV в файл с именем products.csv.

1
2
3
4
5
6
7
8
9
10
Const фс = требовать('фс'),
json2csv = требовать('json2csv').разбор,
продукты = требовать('./products.json'),
поля = ['заглавие', 'цена', 'расположение', 'URL-адрес'],
csv = json2csv(продукты, {поля});

фс.записьФайл(«продукты.csv», CSV-файл, функция (заблуждаться) {
if (ошибка) бросать ошибаюсь;
консоль.журнал(«Файл CSV сохранен!»);
});

Фрагмент выходного CSV-файла:

Сохраните данные Craigslist в файл CSV

Скрапинг данных Craigslist полезен для изучения рынка, выявления возможных лидов, анализа конкурентов и сбора наборов данных. Однако Craigslist использует строгие меры безопасности, такие как запреты IP и экраны CAPTCHA, что затрудняет скрапинг. Crawlbase Crawling API решает эту проблему, позволяя вам скрейпить публичные списки Craigslist в широком масштабе, не сталкиваясь с IP-банами или трудностями CAPTCHA. Это руководство показывает, как скрейпить данные о листинге недвижимости с Craigslist и сохранить их в виде файлов JSON и CSV.

Ознакомьтесь с нашими дополнительными руководствами по аналогичным методам Trulia, Realtor.com, Zillow и Target.com. Эти ресурсы полезны для улучшения ваших возможностей по сбору данных на разных платформах.

Дополнительные руководства:

Как парсить сайты с помощью ChatGPT

Как скрейпить TikTok

Как создать трекер цен Wayfair

Как сканировать данные TripAdvisor с помощью Smart AI Proxy

Как очистить данные Instagram

10. Часто задаваемые вопросы

В заключение этого руководства давайте рассмотрим часто задаваемые вопросы о сборе данных Craigslist.

Какова история Craigslist.com?

Крейг Ньюмарк основал Craigslist в 1995 году. Он начинался как список адресов электронной почты для обмена местными событиями и объявлениями в Сан-Франциско. К 1996 году он превратился в веб-сайт, который быстро развился и стал ведущим местом для объявлений во всем мире. Даже после того, как он начал приносить прибыль, он по-прежнему был сосредоточен на помощи людям, взимая небольшую плату за размещение вакансий и квартир. Он распространился на другие страны, включая Канаду и Великобританию. Craigslist сохраняет свою популярность, несмотря на некоторые проблемы, сохраняя простоту и поддерживая местные сообщества, особенно благодаря благотворительным взносам Крейга Ньюмарка.

История Craigslist

Разрешает ли Craigslist парсинг?

Парсинг общедоступной информации является законным, но законы могут различаться, поэтому перед началом любых проектов по парсингу Craigslist рекомендуется обратиться за профессиональной юридической консультацией. Craigslist запрещает автоматизированный парсинг, в то время как ручной доступ для личного использования разрешен. Несанкционированный парсинг может привести к блокировке доступа или юридическим последствиям. Авторское право и конфиденциальность — это два этических и юридических соображения, которые необходимо учитывать, поскольку их законность различается в зависимости от юрисдикции. Чтобы узнать больше о парсинге, прочитайте «Законен ли веб-скрапинг?» статьи.

Есть ли у Craigslist официальный API?

Craigslist.com не предоставляет официального API для доступа к своим данным. Хотя некоторые разделы предлагают RSS-каналы для ограниченного доступа к данным, всеобъемлющего API нет. В результате разработчики часто прибегают к методам веб-скрейпинга для сбора данных с Craigslist.

Как обойти CAPTCHA на Craigslist?

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

Зачем сканировать Craigslist?

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

Вот как можно использовать Craigslist с Crawlbase может быть полезным:

  1. Исследование рынка и конкурентный анализ: Компании могут узнать о тенденциях ценообразования, потребительском спросе и стратегиях конкурентов, изучая листинги Craigslist. Понимание рыночных тенденций, выявление пробелов и принятие мудрых решений, чтобы оставаться впереди конкурентов, облегчается анализом этих данных.
  2. Ведущее поколение: Скрапинг Craigslist облегчает генерацию лидов, собирая контактные данные потенциальных потребителей или клиентов. Это включает номера телефонов и адреса электронной почты, которые могут быть использованы для целевых маркетинговых кампаний и мероприятий по продажам.
  3. Аналитика недвижимости: Craigslist scraping предлагает экспертам по недвижимости и инвесторам в недвижимость отличную информацию о рынке жилья. Отслеживание цен на аренду, списков недвижимости и тенденций в регионе позволяет вам принимать более обоснованные инвестиционные решения и изменять тактику ценообразования в ответ на рыночные условия.
  4. Анализ рынка труда: Соискатели и работодатели могут использовать скрапинг Craigslist для доступа к данным о вакансиях в режиме реального времени. Анализ тенденций вакансий, требований к навыкам и ожиданий по зарплате позволяет соискателям адаптировать свои резюме и помогает работодателям оптимизировать стратегии подбора персонала.
  5. Оптимизация электронной коммерции: Craigslist scraping — полезный инструмент для компаний электронной коммерции, позволяющий отслеживать цены конкурентов, определять тенденции в продуктах и ​​улучшать собственные листинги. Используя стратегии на основе данных для предоставления соответствующих продуктов по конкурентоспособным ценам, компании могут оставаться конкурентоспособными на онлайн-рынке.