Skip to content

Resident234/job_board_scraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JobBoardScraper v2.0

Мощное приложение для автоматического сбора данных с career.habr.com с поддержкой экспертов, компаний и резюме.

.NET PostgreSQL License


🚀 Быстрый старт

# 1. Клонировать репозиторий
git clone <repository-url>
cd JobBoardScraper

# 2. Создать базу данных
psql -U postgres -c "CREATE DATABASE jobs;"

# 3. Выполнить SQL-скрипты
psql -U postgres -d jobs -f sql/create_resumes_table.sql
psql -U postgres -d jobs -f sql/create_companies_table.sql
psql -U postgres -d jobs -f sql/create_category_root_ids_table.sql
psql -U postgres -d jobs -f sql/create_skills_table.sql
psql -U postgres -d jobs -f sql/add_expert_columns.sql
psql -U postgres -d jobs -f sql/add_company_details_columns.sql
psql -U postgres -d jobs -f sql/create_levels_table.sql
psql -U postgres -d jobs -f sql/add_user_profile_columns.sql

# 4. Применить дополнительные миграции (если нужно)
psql -U postgres -d jobs -f sql/alter_resumes_add_additional_fields.sql
psql -U postgres -d jobs -f sql/alter_resumes_add_job_search_status.sql

# 5. Запустить приложение
dotnet run --project JobBoardScraper

Подробнее: QUICKSTART.md


✨ Что нового в v2.0

🎯 ExpertsScraper

Новый скрапер для сбора данных экспертов с расширенной информацией:

  • Имя и ссылка на профиль
  • Код пользователя
  • Стаж работы
  • Компания

🏢 CompanyDetailScraper

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

  • Основная информация (ID, название, описание, сайт, рейтинг)
  • Статистика (сотрудники, подписчики)
  • Контактные лица и сотрудники
  • Связанные компании
  • Навыки компании (с таблицей связей многие-ко-многим)
  • Флаг наличия блога на Хабре

👤 UserProfileScraper

Новый скрапер для сбора детальной информации о профилях пользователей:

  • Имя пользователя
  • Статус эксперта
  • Уровень (Junior, Middle, Senior и т.д.)
  • Техническая информация
  • Зарплатные ожидания
  • Опыт работы
  • Дата последнего визита
  • Определение публичности профиля

📝 UserResumeDetailScraper

Новый скрапер для извлечения детальной информации из резюме пользователей:

  • Текст "О себе" (about)
  • Список навыков (skills) с таблицей связей многие-ко-многим
  • Опыт работы с детальной информацией о компаниях, должностях и навыках
  • Дополнительные данные профиля:
    • Возраст (например: "37 лет")
    • Дата регистрации (например: "30.08.2022")
    • Гражданство (например: "Россия")
    • Готовность к удаленной работе
  • Автоматическое создание/обновление компаний при парсинге опыта
  • Интеграция с таблицами habr_skills, habr_user_skills, habr_user_experience и habr_user_experience_skills
  • Поддержка прокси-ротации для обхода лимитов

🔧 Улучшения

  • SmartHttpClient: Умная обёртка над HttpClient с автоматическими повторами, измерением трафика и поддержкой прокси
  • ProxyRotator: Автоматическая ротация прокси-серверов для распределения нагрузки
  • TrafficStatistics: Детальная статистика трафика по скраперам
  • AdaptiveConcurrencyController: Динамическое управление параллелизмом
  • DatabaseClient: Универсальный клиент для работы с PostgreSQL
  • ExponentialBackoff: Умная стратегия повторов с экспоненциальной задержкой и jitter для HTTP ошибок
  • ProfileDataExtractor: Централизованный класс для извлечения данных профиля из HTML
  • job_search_status: Новое поле для хранения статуса поиска работы пользователя

🌐 Поддержка прокси

Система поддерживает автоматическую ротацию прокси-серверов для обхода ограничений и распределения нагрузки.

Быстрая настройка

<!-- В App.config -->
<add key="Proxy:Enabled" value="true" />
<add key="Proxy:List" value="http://proxy1:8080;http://proxy2:8080" />

Использование

// Создать ProxyRotator из конфигурации
var proxyRotator = HttpClientFactory.CreateProxyRotator();

// Создать HttpClient с прокси
var httpClient = HttpClientFactory.CreateHttpClient(proxyRotator);

// Создать SmartHttpClient с поддержкой прокси
var smartClient = new SmartHttpClient(
    httpClient,
    scraperName: "MyScraper",
    proxyRotator: proxyRotator
);

Подробнее:


📚 Документация

Скраперы

Алгоритмы и стратегии

Рефакторинг и изменения

Быстрые старты


🛠️ Технологии

  • .NET 9.0 - Современная платформа разработки
  • PostgreSQL 12+ - Надёжная база данных
  • AngleSharp - Парсинг HTML
  • Npgsql - Драйвер PostgreSQL для .NET
  • ProxyRotator - Ротация прокси-серверов

📝 Лицензия

MIT License - см. LICENSE


🤝 Вклад

Приветствуются pull requests и issues!


📧 Контакты

Если у вас есть вопросы или предложения, создайте issue в репозитории.

About

Simple scraper for extracting job listings from online job boards

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages