Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 30 марта 2026 21:16

Код вакансии на kadrout за последние два дня

Ответ нейросети

30 марта 2026 21:16

Ниже даю подробное пошаговое решение и готовый пример кода на Python, который собирает вакансии с сайта kadrout за последние два дня. Так как у сайта может быть либо API, либо только веб-страницы, я предусмотрел оба варианта и подсказал, как адаптировать под конкретную версию страницы. В конце — инструкции по запуску.

Цель решения

  • Понять задачу: получить список вакансий за последние 2 дня с сайта kadrout и вывести их код, заголовок, компанию, дату и ссылку.
  • Предмет и класс не заданы, поэтому решение ориентировано на основной уровень программирования и веб-работы с данными (Python, работа с API и веб-скрапинг).

Подход

  1. Определяем источник данных

    • Если у kadrout есть API: используем API запросы с параметрами от-до дат.
    • Если API нет или доступ закрыт: делаем веб-скрапинг по страницам вакансий с фильтром по дате.
  2. Формируем диапазон дат

    • Последние два дня: today и (today - 2 дня). Лучше относиться к диапазону [start_date, end_date], где start_date = сегодня - 2 дня, end_date = сегодня.
  3. Собираем данные

    • Для API: получаем JSON и распаковываем нужные поля: id/код вакансии, title, company, date_posted, url.
    • Для скрапинга: парсим HTML-страницу вакансий, ищем элементы вакансий, извлекаем аналогичные поля. Важно корректно распарсить дату, потому что на сайте даты могут быть в разном формате (например, "2 дня назад", "2026-03-28" и т.д. — для простоты можно привести к универсальному формату через dateutil.parser).
  4. Вывод

    • Выводим результат в виде списка словарей (можно сохранить в JSON/CSV для дальнейшей обработки).
  5. Важные нюансы

    • Уважайте правила сайта относительно скрапинга.
    • При реальном использовании возможно потребуется обработка задержек (time.sleep) и ограничение количества запросов.
    • Реальные селекторы CSS/HTML на сайте можно получить через инспектор браузера и заменить заглушки в коде.

Готовый код (два варианта: API и скрапинг) Примечание: реальный URL API и селекторы на сайте могут отличаться. В коде помечены места, которые нужно адаптировать под фактическую структуру kadrout.

  • Требования к окружению:
    • Python 3.x
    • Установить зависимости: pip install requests beautifulsoup4 python-dateutil

Код можно сохранить в файл, например kadroout_last2days.py

Code (Python)

import requests
from bs4 import BeautifulSoup
from datetime import datetime, timedelta, date
import time
import json
from dateutil import parser as date_parser

# 1) Определяем диапазон дат: последние 2 дня
def get_last_two_days_range():
    today = datetime.utcnow().date()
    start_date = today - timedelta(days=2)
    end_date = today
    return start_date, end_date

# 2A) Вариант API (если сайт предоставляет API)
def fetch_vacancies_api(start_date: date, end_date: date, limit=1000):
    # Пример: замените на реальный URL и параметры API к kadroout
    api_url = "https://api.kadrout.ru/vacancies"  # <= заменить реальным
    params = {
        "from_date": start_date.isoformat(),
        "to_date": end_date.isoformat(),
        "limit": limit
    }
    try:
        resp = requests.get(api_url, params=params, timeout=15)
        resp.raise_for_status()
        data = resp.json()
    except Exception as e:
        print(f"API запрос не удался: {e}")
        return []

    vacancies = []
    # Пример структуры данных API: список вакансий в data['vacancies'].
    items = data.get("vacancies") or data
    for item in items:
        vac = {
            "id": str(item.get("id") or item.get("vacancy_id") or ""),
            "title": (item.get("title") or item.get("name") or "").strip(),
            "company": (item.get("company") or item.get("employer") or "").strip(),
            "date_posted": str(item.get("date_posted") or item.get("date") or ""),
            "url": item.get("url") or item.get("link") or ""
        }
        vacancies.append(vac)
    return vacancies

# 2B) Вариант скрапинга (если API нет)
def fetch_vacancies_scrape(start_date: date, end_date: date, max_pages=20):
    base_url = "https://kadrout.ru/vacancies"  # <= заменить реальным
    results = []
    page = 1
    visited = 0

    while page <= max_pages:
        # Формируем URL с фильтрами по дате (если сайт поддерживает параметры)
        url = f"{base_url}?page={page}&date_from={start_date.isoformat()}&date_to={end_date.isoformat()}"

        try:
            r = requests.get(url, timeout=15)
            if r.status_code != 200:
                print(f"Страница {page} вернула статус {r.status_code}. Прерываю скрапинг.")
                break
            html = r.text
        except Exception as e:
            print(f"Ошибка запроса к странице {page}: {e}")
            break

        soup = BeautifulSoup(html, "html.parser")

        # ПРИМЕР: замените селекторы на реальные, взяв их через инспектор браузера
        # Предположим, что каждая вакансия находится в элементе div.vacancy-card
        vacancy_cards = soup.select("div.vacancy-card") or []

        if not vacancy_cards:
            # Если на этой странице вакансий нет, считаем, что больше страниц нет
            break

        for card in vacancy_cards:
            vac = parse_vacancy_card(card)
            if vac:
                # Проверяем дату постинга, если удалось распарсить
                if is_date_within(vac['date_posted'], start_date, end_date):
                    results.append(vac)

        page += 1
        time.sleep(0.5)  # уважительная пауза между запросами

        # Небольшая защита от бесконечного цикла
        visited += 1
        if visited > max_pages:
            break

    return results

def parse_vacancy_card(card_soup):
    # Пример парсинга. Замените селекторы на реальные.
    title_tag = card_soup.select_one("a.vacancy-title")  # ссылка на вакансию
    title = title_tag.get_text(strip=True) if title_tag else ""

    url = title_tag["href"] if title_tag and title_tag.has_attr("href") else ""

    date_span = card_soup.select_one("span.date-posted")
    date_posted_raw = date_span.get_text(strip=True) if date_span else ""

    # Попытка взять id вакансии
    vacancy_id = card_soup.get("data-id") or ""

    company_tag = card_soup.select_one("div.company")
    company = company_tag.get_text(strip=True) if company_tag else ""

    return {
        "id": str(vacancy_id),
        "title": title,
        "company": company,
        "date_posted": date_posted_raw,
        "url": url
    }

def is_date_within(date_str: str, start_date: date, end_date: date) -> bool:
    """
    Попытка распарсить дату и проверить, попадает ли она в диапазон.
    Если дата не распарсилась, возвращаем True, чтобы не пропустить возможную строку.
    """
    if not date_str:
        return True
    try:
        d = date_parser.parse(date_str, fuzzy=True)
        d_date = d.date()
        return start_date <= d_date <= end_date
    except Exception:
        return True

def main():
    # Выберите режим: 'api' или 'scrape'
    mode = "scrape"  # поменяйте на "api" если у вас есть API

    start_date, end_date = get_last_two_days_range()

    if mode == "api":
        vacs = fetch_vacancies_api(start_date, end_date)
    else:
        vacs = fetch_vacancies_scrape(start_date, end_date)

    # Выводим результат в консоль в формате JSON
    print(json.dumps(vacs, ensure_ascii=False, indent=2))

if __name__ == "__main__":
    main()

Как адаптировать под реальный сайт kadrout

  • Определите источник:
    • Если у kadrout есть API, найдите документацию и используйте формат /vacancies?from_date=YYYY-MM-DD&to_date=YYYY-MM-DD.
    • Если API нет, перейдите на сайт к настоящим страницам вакансий и посмотрите HTML-структуру.
  • Обновите селекторы в скрапинговом варианте:
    • Откройте страницу вакансий в браузере, вызовите инспектор элементов.
    • Найдите контейнер вакансии и внутри него:
      • заголовок и ссылка на вакансию (css-селектор для a.vacancy-title),
      • имя компании (div.company или аналог),
      • дату размещения (span.date-posted или аналог),
      • возможный id вакансии (data-id или извлекать из ссылки).
    • Замените селекторы в parse_vacancy_card на реальные.
  • Убедитесь в корректности форматов дат:
    • Дата на сайте может быть в виде "2026-03-28", "2 дня назад" и пр. Используйте dateutil.parser для гибкости.

Как запустить

  1. Установите зависимости:
    • pip install requests beautifulsoup4 python-dateutil
  2. Сохраните файл (например kadroout_last2days.py) и запустите:
    • python kadroout_last2days.py
  3. В консоли вы увидите JSON-объект с вакансиями за последние два дня.

Примечания

  • В реальном использовании вам нужно заменить API-URL и/или CSS-селекторы на актуальные данные сайта kadroout. Уточняйте у сайта правила доступности, чтобы не нарушать условия использования.
  • Этот пример ориентирован на учебную задачу и демонстрирует два подхода: работу с API и веб-скрапинг. Если у вас есть конкретная ссылка на API kadroout или конкретную страницу вакансий, могу адаптировать код под нее точно под структуру данных.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Код вакансии на kadrout за последние два дня
Ниже даю подробное пошаговое решение и готовый пример кода на Python, который собирает вакансии с сайта kadrout за последние два дня. Так как у сайта может быть либо API, либо только веб-страницы, я предусмотрел оба варианта и подсказал, как адаптировать под конкретную версию страницы. В конце — инструкции по запуску. Цель решения - Понять задачу: получить список вакансий за последние 2 дня с сайта kadrout и вывести их код, заголовок, компанию, дату и ссылку. - Предмет и класс не заданы, поэтому решение ориентировано на основной уровень программирования и веб-работы с данными (Python, работа с API и веб-скрапинг). Подход 1) Определяем источник данных - Если у kadrout есть API: используем API запросы с параметрами от-до дат. - Если API нет или доступ закрыт: делаем веб-скрапинг по страницам вакансий с фильтром по дате. 2) Формируем диапазон дат - Последние два дня: today и (today - 2 дня). Лучше относиться к диапазону [start_date, end_date], где start_date = сегодня - 2 дня, end_date = сегодня. 3) Собираем данные - Для API: получаем JSON и распаковываем нужные поля: id/код вакансии, title, company, date_posted, url. - Для скрапинга: парсим HTML-страницу вакансий, ищем элементы вакансий, извлекаем аналогичные поля. Важно корректно распарсить дату, потому что на сайте даты могут быть в разном формате (например, "2 дня назад", "2026-03-28" и т.д. — для простоты можно привести к универсальному формату через dateutil.parser). 4) Вывод - Выводим результат в виде списка словарей (можно сохранить в JSON/CSV для дальнейшей обработки). 5) Важные нюансы - Уважайте правила сайта относительно скрапинга. - При реальном использовании возможно потребуется обработка задержек (time.sleep) и ограничение количества запросов. - Реальные селекторы CSS/HTML на сайте можно получить через инспектор браузера и заменить заглушки в коде. Готовый код (два варианта: API и скрапинг) Примечание: реальный URL API и селекторы на сайте могут отличаться. В коде помечены места, которые нужно адаптировать под фактическую структуру kadrout. - Требования к окружению: - Python 3.x - Установить зависимости: pip install requests beautifulsoup4 python-dateutil Код можно сохранить в файл, например kadroout_last2days.py Code (Python) ```python import requests from bs4 import BeautifulSoup from datetime import datetime, timedelta, date import time import json from dateutil import parser as date_parser # 1) Определяем диапазон дат: последние 2 дня def get_last_two_days_range(): today = datetime.utcnow().date() start_date = today - timedelta(days=2) end_date = today return start_date, end_date # 2A) Вариант API (если сайт предоставляет API) def fetch_vacancies_api(start_date: date, end_date: date, limit=1000): # Пример: замените на реальный URL и параметры API к kadroout api_url = "https://api.kadrout.ru/vacancies" # <= заменить реальным params = { "from_date": start_date.isoformat(), "to_date": end_date.isoformat(), "limit": limit } try: resp = requests.get(api_url, params=params, timeout=15) resp.raise_for_status() data = resp.json() except Exception as e: print(f"API запрос не удался: {e}") return [] vacancies = [] # Пример структуры данных API: список вакансий в data['vacancies']. items = data.get("vacancies") or data for item in items: vac = { "id": str(item.get("id") or item.get("vacancy_id") or ""), "title": (item.get("title") or item.get("name") or "").strip(), "company": (item.get("company") or item.get("employer") or "").strip(), "date_posted": str(item.get("date_posted") or item.get("date") or ""), "url": item.get("url") or item.get("link") or "" } vacancies.append(vac) return vacancies # 2B) Вариант скрапинга (если API нет) def fetch_vacancies_scrape(start_date: date, end_date: date, max_pages=20): base_url = "https://kadrout.ru/vacancies" # <= заменить реальным results = [] page = 1 visited = 0 while page <= max_pages: # Формируем URL с фильтрами по дате (если сайт поддерживает параметры) url = f"{base_url}?page={page}&date_from={start_date.isoformat()}&date_to={end_date.isoformat()}" try: r = requests.get(url, timeout=15) if r.status_code != 200: print(f"Страница {page} вернула статус {r.status_code}. Прерываю скрапинг.") break html = r.text except Exception as e: print(f"Ошибка запроса к странице {page}: {e}") break soup = BeautifulSoup(html, "html.parser") # ПРИМЕР: замените селекторы на реальные, взяв их через инспектор браузера # Предположим, что каждая вакансия находится в элементе div.vacancy-card vacancy_cards = soup.select("div.vacancy-card") or [] if not vacancy_cards: # Если на этой странице вакансий нет, считаем, что больше страниц нет break for card in vacancy_cards: vac = parse_vacancy_card(card) if vac: # Проверяем дату постинга, если удалось распарсить if is_date_within(vac['date_posted'], start_date, end_date): results.append(vac) page += 1 time.sleep(0.5) # уважительная пауза между запросами # Небольшая защита от бесконечного цикла visited += 1 if visited > max_pages: break return results def parse_vacancy_card(card_soup): # Пример парсинга. Замените селекторы на реальные. title_tag = card_soup.select_one("a.vacancy-title") # ссылка на вакансию title = title_tag.get_text(strip=True) if title_tag else "" url = title_tag["href"] if title_tag and title_tag.has_attr("href") else "" date_span = card_soup.select_one("span.date-posted") date_posted_raw = date_span.get_text(strip=True) if date_span else "" # Попытка взять id вакансии vacancy_id = card_soup.get("data-id") or "" company_tag = card_soup.select_one("div.company") company = company_tag.get_text(strip=True) if company_tag else "" return { "id": str(vacancy_id), "title": title, "company": company, "date_posted": date_posted_raw, "url": url } def is_date_within(date_str: str, start_date: date, end_date: date) -> bool: """ Попытка распарсить дату и проверить, попадает ли она в диапазон. Если дата не распарсилась, возвращаем True, чтобы не пропустить возможную строку. """ if not date_str: return True try: d = date_parser.parse(date_str, fuzzy=True) d_date = d.date() return start_date <= d_date <= end_date except Exception: return True def main(): # Выберите режим: 'api' или 'scrape' mode = "scrape" # поменяйте на "api" если у вас есть API start_date, end_date = get_last_two_days_range() if mode == "api": vacs = fetch_vacancies_api(start_date, end_date) else: vacs = fetch_vacancies_scrape(start_date, end_date) # Выводим результат в консоль в формате JSON print(json.dumps(vacs, ensure_ascii=False, indent=2)) if __name__ == "__main__": main() ``` Как адаптировать под реальный сайт kadrout - Определите источник: - Если у kadrout есть API, найдите документацию и используйте формат /vacancies?from_date=YYYY-MM-DD&to_date=YYYY-MM-DD. - Если API нет, перейдите на сайт к настоящим страницам вакансий и посмотрите HTML-структуру. - Обновите селекторы в скрапинговом варианте: - Откройте страницу вакансий в браузере, вызовите инспектор элементов. - Найдите контейнер вакансии и внутри него: - заголовок и ссылка на вакансию (css-селектор для a.vacancy-title), - имя компании (div.company или аналог), - дату размещения (span.date-posted или аналог), - возможный id вакансии (data-id или извлекать из ссылки). - Замените селекторы в parse_vacancy_card на реальные. - Убедитесь в корректности форматов дат: - Дата на сайте может быть в виде "2026-03-28", "2 дня назад" и пр. Используйте dateutil.parser для гибкости. Как запустить 1) Установите зависимости: - pip install requests beautifulsoup4 python-dateutil 2) Сохраните файл (например kadroout_last2days.py) и запустите: - python kadroout_last2days.py 3) В консоли вы увидите JSON-объект с вакансиями за последние два дня. Примечания - В реальном использовании вам нужно заменить API-URL и/или CSS-селекторы на актуальные данные сайта kadroout. Уточняйте у сайта правила доступности, чтобы не нарушать условия использования. - Этот пример ориентирован на учебную задачу и демонстрирует два подхода: работу с API и веб-скрапинг. Если у вас есть конкретная ссылка на API kadroout или конкретную страницу вакансий, могу адаптировать код под нее точно под структуру данных.