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

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

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

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

Вопрос от Анонимного юзера 11 марта 2026 12:00

Напиши код вакансии самой последней на сайте kadrout

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

11 марта 2026 12:00

Задача понятна: написать код, который возвращает информацию о самой последней вакансии на сайте kadrout (то есть последняя по дате размещения). Ниже — подробное решение с пояснениями и рабочим примером кода на Python. Учти, что структура страницы может меняться, поэтому код рассчитан на адаптацию под реально изучаемый HTML.

Важно: перед скрапингом проверь robots.txt у сайта и правила использования данных. Также желательно добавлять задержки между запросами и уважать ограничение частоты запросов.

Часть 1. Общее объяснение подхода

  • Мы загружаем страницу с вакансиями (страница с последними объявлениями).
  • Парсим HTML и ищем первый элемент-карточку вакансии, которая обычно имеет классы, содержащие слова vacancy, job, card и т.д.
  • Из найденного элемента извлекаем:
    • title (название вакансии)
    • link (ссылка на полное объявление)
    • company (компания)
    • location (местоположение)
    • date_posted (дата размещения, если есть)
  • Если структура страницы отличается, код подцепит данные с других селекторов и подскажет, какие селекторы подставить.

Часть 2. Пример кода (Python, requests + BeautifulSoup)

  • Требуются библиотеки: requests, beautifulsoup4
  • Установка: pip install requests beautifulsoup4

Сохранение: ниже приведён единый скрипт. Он ищет наиболее вероятные CSS-селекторы карточки вакансии и полей, и возвращает словарь с данными. Если какой-то элемент найти не удалось — он будет None.

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

def fetch_latest_vacancy(base_url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
    }

    resp = requests.get(base_url, headers=headers, timeout=20)
    resp.raise_for_status()

    soup = BeautifulSoup(resp.text, 'html.parser')

    # Попытки найти карточку вакансии по нескольким распространённым селекторам
    selectors = [
        '.vacancy-card',        # common
        '.job-card',              # common
        '.job-item',              # common
        '.vacancy',               # common
        'article.job',            # common структура
        'div[id^="vacancy"]',     # динамические id
        'div[class*="vacancy-card"]',
        'li[class*="vacancy"]',
        'div[class*="job-card"]',
        'section[class*="vacancy"]',
    ]

    latest_el = None
    for sel in selectors:
        el = soup.select_one(sel)
        if el:
            latest_el = el
            break

    # Если не нашли карточку — fallback к первой ссылке на странице
    if latest_el is None:
        a = soup.find('a')
        if a:
            title = a.get_text(strip=True)
            link = urljoin(base_url, a.get('href'))
            return {
                'title': title,
                'link': link,
                'company': None,
                'location': None,
                'date_posted': None
            }
        return None

    # Из самой карточки извлекаем данные
    def get_text(parent, selectors):
        for s in selectors:
            el = parent.select_one(s)
            if el and el.get_text(strip=True):
                return el.get_text(strip=True)
        return None

    # Заголовок и ссылка (возьмём первый <a> внутри карточки, если он есть)
    title_tag = latest_el.select_one('a') or latest_el.find(['h1','h2','h3','span','div'])
    title = title_tag.get_text(strip=True) if title_tag else None
    link = None
    if title_tag and title_tag.name == 'a' and title_tag.get('href'):
        link = urljoin(base_url, title_tag['href'])
    else:
        # попытка найти любую ссылку внутри карточки
        a = latest_el.find('a')
        if a and a.get('href'):
            link = urljoin(base_url, a['href'])

    company = get_text(latest_el, [
        '.company', '.employer', '.organization', '.brand',
        'span.company', 'div.company'
    ])

    location = get_text(latest_el, [
        '.location', '.city', '.region', '.place',
        'span.location', 'div.location'
    ])

    date_posted = get_text(latest_el, [
        '.date', '.posted', '.time', 'time'
    ])

    return {
        'title': title,
        'link': link,
        'company': company,
        'location': location,
        'date_posted': date_posted
    }

if __name__ == '__main__':
    # Замените на фактическую страницу вакансий kadroout
    url = 'https://kadrout.ru/vacancies'  # пример; укажите реальный адрес страницы вакансий
    result = fetch_latest_vacancy(url)
    print(result)

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

  • Откройте страницу вакансий в браузере.
  • Правой кнопкой по карточке вакансии -> "Inspect" (Инспектор).
  • Посмотрите структуру HTML: какие классы у карточки вакансии (например, идущие в селекторах .vacancy-card, .job-card и т.д.), какие элементы содержат title, company, location, date.
  • Подставьте реальные селекторы в массив selectors. Можно временно распечатать весь HTML и найти нужные элементы, чтобы подобрать точные селекторы.

Часть 3. Альтернатива: динамическая загрузка контента (JS) Если страница подгружает данные ваканси через JavaScript и HTML не содержит карточек сразу после загрузки, используйте Selenium (или Playwright) чтобы рендерить страницу и потом парсить готовый HTML.

Пример с Selenium (headless Chrome):

  • Требуется: selenium, chromedriver (или geckodriver). Установка: pip install selenium
  • Убедитесь, что версия драйвера совместима с вашей версией Chrome.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time
from urllib.parse import urljoin

def fetch_latest_vacancy_js(url):
    options = Options()
    options.add_argument("--headless")
    options.add_argument("--disable-gpu")
    driver = webdriver.Chrome(options=options)
    try:
        driver.get(url)
        time.sleep(3)  # подождать загрузку JS
        html = driver.page_source
    finally:
        driver.quit()

    soup = BeautifulSoup(html, 'html.parser')
    # используйте те же селекторы, что и в статическом примере
    # ...
    # здесь можно повторить логику из fetch_latest_vacancy на полученном soup
    return None  # заменить на реальную обработку

if __name__ == '__main__':
    url = 'https://kadrout.ru/vacancies'
    print(fetch_latest_vacancy_js(url))

Часть 4. Что нужно изменить под твой случай

  • Замени URL в коде на фактическую страницу вакансий на kadrou t.
  • Обнови список selectors под конкретную версию HTML данного сайта.
  • При отсутствии даты размещения — оставляй date_posted как None.
  • Добавь обработку относительных ссылок и корректную нормализацию URL.

Часть 5. Примечания

  • Уважай robots.txt и правила сайта касательно скрапинга.
  • Не перегружай сайт частыми запросами; можешь добавить паузы между запросами.
  • Если страница предоставляет RSS/Atom фид вакансий, проще парсить его — он однозначно отдаёт последние записи.

Если хочешь, скажи точный URL страницы kadroout, и я адаптирую селекторы под конкретную версию страницы и пришлю готовый рабочий скрипт под твой случай.

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

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

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

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

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

qr-codegoogle-playapp-store

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

напиши код вакансии самой последней на сайте kadrout
Задача понятна: написать код, который возвращает информацию о самой последней вакансии на сайте kadrout (то есть последняя по дате размещения). Ниже — подробное решение с пояснениями и рабочим примером кода на Python. Учти, что структура страницы может меняться, поэтому код рассчитан на адаптацию под реально изучаемый HTML. Важно: перед скрапингом проверь robots.txt у сайта и правила использования данных. Также желательно добавлять задержки между запросами и уважать ограничение частоты запросов. Часть 1. Общее объяснение подхода - Мы загружаем страницу с вакансиями (страница с последними объявлениями). - Парсим HTML и ищем первый элемент-карточку вакансии, которая обычно имеет классы, содержащие слова vacancy, job, card и т.д. - Из найденного элемента извлекаем: - title (название вакансии) - link (ссылка на полное объявление) - company (компания) - location (местоположение) - date_posted (дата размещения, если есть) - Если структура страницы отличается, код подцепит данные с других селекторов и подскажет, какие селекторы подставить. Часть 2. Пример кода (Python, requests + BeautifulSoup) - Требуются библиотеки: requests, beautifulsoup4 - Установка: pip install requests beautifulsoup4 Сохранение: ниже приведён единый скрипт. Он ищет наиболее вероятные CSS-селекторы карточки вакансии и полей, и возвращает словарь с данными. Если какой-то элемент найти не удалось — он будет None. ```python import requests from bs4 import BeautifulSoup from urllib.parse import urljoin def fetch_latest_vacancy(base_url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' } resp = requests.get(base_url, headers=headers, timeout=20) resp.raise_for_status() soup = BeautifulSoup(resp.text, 'html.parser') # Попытки найти карточку вакансии по нескольким распространённым селекторам selectors = [ '.vacancy-card', # common '.job-card', # common '.job-item', # common '.vacancy', # common 'article.job', # common структура 'div[id^="vacancy"]', # динамические id 'div[class*="vacancy-card"]', 'li[class*="vacancy"]', 'div[class*="job-card"]', 'section[class*="vacancy"]', ] latest_el = None for sel in selectors: el = soup.select_one(sel) if el: latest_el = el break # Если не нашли карточку — fallback к первой ссылке на странице if latest_el is None: a = soup.find('a') if a: title = a.get_text(strip=True) link = urljoin(base_url, a.get('href')) return { 'title': title, 'link': link, 'company': None, 'location': None, 'date_posted': None } return None # Из самой карточки извлекаем данные def get_text(parent, selectors): for s in selectors: el = parent.select_one(s) if el and el.get_text(strip=True): return el.get_text(strip=True) return None # Заголовок и ссылка (возьмём первый внутри карточки, если он есть) title_tag = latest_el.select_one('a') or latest_el.find(['h1','h2','h3','span','div']) title = title_tag.get_text(strip=True) if title_tag else None link = None if title_tag and title_tag.name == 'a' and title_tag.get('href'): link = urljoin(base_url, title_tag['href']) else: # попытка найти любую ссылку внутри карточки a = latest_el.find('a') if a and a.get('href'): link = urljoin(base_url, a['href']) company = get_text(latest_el, [ '.company', '.employer', '.organization', '.brand', 'span.company', 'div.company' ]) location = get_text(latest_el, [ '.location', '.city', '.region', '.place', 'span.location', 'div.location' ]) date_posted = get_text(latest_el, [ '.date', '.posted', '.time', 'time' ]) return { 'title': title, 'link': link, 'company': company, 'location': location, 'date_posted': date_posted } if __name__ == '__main__': # Замените на фактическую страницу вакансий kadroout url = 'https://kadrout.ru/vacancies' # пример; укажите реальный адрес страницы вакансий result = fetch_latest_vacancy(url) print(result) ``` Как адаптировать под конкретный сайт kadroout - Откройте страницу вакансий в браузере. - Правой кнопкой по карточке вакансии -> "Inspect" (Инспектор). - Посмотрите структуру HTML: какие классы у карточки вакансии (например, идущие в селекторах .vacancy-card, .job-card и т.д.), какие элементы содержат title, company, location, date. - Подставьте реальные селекторы в массив selectors. Можно временно распечатать весь HTML и найти нужные элементы, чтобы подобрать точные селекторы. Часть 3. Альтернатива: динамическая загрузка контента (JS) Если страница подгружает данные ваканси через JavaScript и HTML не содержит карточек сразу после загрузки, используйте Selenium (или Playwright) чтобы рендерить страницу и потом парсить готовый HTML. Пример с Selenium (headless Chrome): - Требуется: selenium, chromedriver (или geckodriver). Установка: pip install selenium - Убедитесь, что версия драйвера совместима с вашей версией Chrome. ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup import time from urllib.parse import urljoin def fetch_latest_vacancy_js(url): options = Options() options.add_argument("--headless") options.add_argument("--disable-gpu") driver = webdriver.Chrome(options=options) try: driver.get(url) time.sleep(3) # подождать загрузку JS html = driver.page_source finally: driver.quit() soup = BeautifulSoup(html, 'html.parser') # используйте те же селекторы, что и в статическом примере # ... # здесь можно повторить логику из fetch_latest_vacancy на полученном soup return None # заменить на реальную обработку if __name__ == '__main__': url = 'https://kadrout.ru/vacancies' print(fetch_latest_vacancy_js(url)) ``` Часть 4. Что нужно изменить под твой случай - Замени URL в коде на фактическую страницу вакансий на kadrou t. - Обнови список selectors под конкретную версию HTML данного сайта. - При отсутствии даты размещения — оставляй date_posted как None. - Добавь обработку относительных ссылок и корректную нормализацию URL. Часть 5. Примечания - Уважай robots.txt и правила сайта касательно скрапинга. - Не перегружай сайт частыми запросами; можешь добавить паузы между запросами. - Если страница предоставляет RSS/Atom фид вакансий, проще парсить его — он однозначно отдаёт последние записи. Если хочешь, скажи точный URL страницы kadroout, и я адаптирую селекторы под конкретную версию страницы и пришлю готовый рабочий скрипт под твой случай.