Найти на kadrout код вакансии за последний 7 дней
Ответ нейросети
02 декабря 2025 13:19
Вот подробное решение по шагам, как найти коды вакансий на сайте kadrout за последние 7 дней. Так как точный способ зависит от того, как именно сайт строит страницы (статические данные, API, или динамическая подгрузка), ниже приведены несколько рабочих подходов. Выберите тот, который подходит для вашего случая, и скажите, если хотите, адаптирую под конкретную страницу.
Цель
- Понять, как получить список кодов вакансий за последние 7 дней и вывести их.
Подходы (кратко)
- Через встроенный фильтр на сайте (если есть фильтр по дате).
- Через API сайта (если у kadroout есть открытое API вакансий).
- Через веб-скрейпинг (если данные выдаются в HTML без API, возможно статично или через пагинацию).
- Через веб-скрейпинг с динамической подгрузкой (если карточки загружаются JS-ом; потребуется Selenium/Playwright).
Важно
- Код вакансии обычно берётся из URL вакансии (например /vacancies/12345) или из атрибута data-id на карточке.
- Учтите временную зону и формат даты на сайте.
- Соблюдайте правила сайта (robots.txt, условия пользования). Если есть API, используйте его.
Детали и решения
- Если на сайте есть фильтр «за последние 7 дней» (самый простой способ)
- Откройте раздел вакансий.
- Найдите фильтр по дате публикации и выберите опцию последних 7 дней.
- Запустите поиск и просмотрите результаты.
- В каждом результатах найдите код вакансии (обычно в URL вакансии или в элементе data-id).
- Соберите все коды.
Как автоматизировать (общий шаблон)
- Этапы: отправить запрос на страницу с фильтром, распарсить страницу, собрать коды, перейти к следующей странице (если есть пагинация), повторять до конца.
- API Kadроout (если доступен)
- Часто сайты предоставляют API вида /api/vacancies?from=YYYY-MM-DD&to=YYYY-MM-DD&page=1
- Преимущество: легче и быстрее, меньше риска блокировки.
Пример общей идеи (псевдокод, адаптируйте под реальный API)
Что делаем:
- Определяем период: from = сегодня - 7 дней, to = сегодня.
- Проходим по страницам, собираем идентификаторы вакансий.
Пример на Python (общий каркас)
ВАЖНО: замените BASE_URL и поля ответа на реальные из вашего API.
Код: import requests from datetime import date, timedelta
BASE_API = "https://kadrout.ru/api/vacancies" # пример URL API def fetch_codes_last_7_days(): end = date.today() start = end - timedelta(days=7) page = 1 codes = [] while True: url = f"{BASE_API}?from={start.isoformat()}&to={end.isoformat()}&page={page}" r = requests.get(url, timeout=15) if r.status_code != 200: break data = r.json() items = data.get("vacancies") or data # подстройте под реальную структуру if not items: break for v in items: # пример: id может называться "id" или "vacancy_id" vid = v.get("id") or v.get("vacancy_id") if vid: codes.append(vid) if not data.get("has_more"): # если API сообщает, есть ли следующая страница break page += 1 return codes
if name == "main": codes = fetch_codes_last_7_days() print(sorted(set(codes)))
- Веб-скрейпинг статичных страниц (без JS-рендеринга)
Этапы:
- Открыть страницу с вакансиями и пагинацией.
- Для каждой карточки извлечь дату и код вакансии.
- Фильтровать карточки по дате: оставить только те, у которых дата публикации не старше 7 дней.
- Перейти на следующую страницу до тех пор, пока дата не уйдет ранее 7 дней.
Пример на Python (с использованием requests + BeautifulSoup) ВНИМАНИЕ: замените селекторы на реальные после inspectPage. import requests from bs4 import BeautifulSoup from datetime import datetime, date, timedelta
BASE_URL = "https://kadrout.ru/vacancies" # реальная страница каталога
def parse_date(text): # Реальная функция должна правильно разобрать формат даты на сайте t = text.strip().lower() now = datetime.utcnow() if "сегодня" in t: return now.date() if "вчера" in t: return (now - timedelta(days=1)).date() # Попытка распарсить конкретную дату вида dd.mm.yyyy или yyyy-mm-dd for fmt in ("%d.%m.%Y", "%Y-%m-%d"): try: return datetime.strptime(text, fmt).date() except ValueError: pass return None def fetch_codes_static(): since = date.today() - timedelta(days=7) codes = set() page = 1 while True: url = f"{BASE_URL}?page={page}" r = requests.get(url, timeout=15) if r.status_code != 200: break soup = BeautifulSoup(r.text, "html.parser") cards = soup.select(".vacancy-card") # заменить на реальный селектор if not cards: break for card in cards: date_text = card.select_one(".vacancy-date").get_text(strip=True) # заменить селектор d = parse_date(date_text) if d and d < since: continue # либо прекратить, если сортировка слева направо a = card.find('a', href=True) code = None if a: href = a['href'] code = href.rstrip('/').split('/')[-1] if code: codes.add(code) page += 1 return sorted(codes) if name == "main": codes = fetch_codes_static() print(codes)
- Веб-скрейпинг с динамическим контентом (JS-рендеринг)
Многие сайты подгружают данные через JS (分页ная загрузка, infinite scroll).
Решение: использовать Selenium или Playwright.
Шаги:
- Открыть страницу с вакансиями.
- Прокручивать страницу до загрузки всех карточек за нужный диапазон дат (можно ограничиться несколькими страницами).
- Извлечь код вакансии из URL или data-id.
- Фильтровать по дате публикации (если дата видна на карточке).
- Собрать уникальные коды.
Пример (очень упрощённый) на Python с Selenium: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time from datetime import date, timedelta, datetime
BASE_URL = "https://kadrout.ru/vacancies"
def fetch_codes_dynamic(days=7): since = date.today() - timedelta(days=days) driver = webdriver.Chrome() # или другой драйвер driver.get(BASE_URL) codes = set() # Пример: прокрутка до конца, чтобы загрузить все карточки last_height = driver.execute_script("return document.body.scrollHeight") while True: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(2) new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: break last_height = new_height cards = driver.find_elements(By.CSS_SELECTOR, ".vacancy-card") # заменить на реальный селектор for c in cards: date_text = c.find_element(By.CSS_SELECTOR, ".vacancy-date").text # заменить d = parse_date(date_text) if d and d < since: continue a = c.find_element(By.TAG_NAME, "a") href = a.get_attribute("href") code = href.rstrip('/').split('/')[-1] if code: codes.add(code) driver.quit() return sorted(codes)
Вспомогательная функция parse_date здесь должна быть аналогично статическому варианту
if name == "main": codes = fetch_codes_dynamic() print(codes)
- Как определить конкретные селекторы и поля
- Откройте страницу в браузере.
- Инструмент "Inspect" (разбираем элемент):
- Найдите карточку вакансии. Обычно она помечена классами вроде vacancy-card.
- Найдите элемент даты публикации — он может называться vacancy-date, date, published, и т.д.
- Узнайте URL вакансии и формат кода: например /vacancies/12345, и вытягивайте 12345 как код.
- Примените эти селекторы в вашем выбранном подходе.
- Практические советы
- Всегда тестируйте на нескольких страницах: страница 1, 2, 3, чтобы понять структуру.
- Обязательно добавляйте задержки между запросами, чтобы не перегружать сервер и не попасть под блокировку.
- Обрабатывайте ошибки сетевого уровня и формат даты.
- Уважайте правила использования сайта и robots.txt.
- При отсутствии API или статической страницности предпочтительнее использовать официальный API, если он есть.
Что можно сделать прямо сейчас
- Если у вас есть ссылка на конкретную страницу kadroout с вакансиями, пришлите её. Я подскажу точные селекторы и дам готовый рабочий скрипт под именно эту страницу (и безопасную реализацию, учитывающую фильтр «последние 7 дней»).
- Если хотите, могу адаптировать код под API, если вы знаете базовый URL API и пример ответа.
Итог
- Я предложил несколько рабочих путей: через встроенный фильтр, через API, через статический и динамический скрейпинг.
- Выберите подход, скажите, есть ли у kadroout API или конкретная страница, и пришлите ссылку — я подготовлю точный и готовый к запуску скрипт на вашем языке (например, Python) под ваш сайт и версию страницы.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



