Для парсинга сайта hh.ru и извлечения всех вакансий с одной страницы можно воспользоваться библиотекой requests для отправки запросов на сайт и библиотекой BeautifulSoup для разбора полученного HTML-кода.
Пример кода для парсинга одной страницы сайта hh.ru:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://hh.ru/search/vacancy?area=1&st=searchVacancy&text=python'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
vacancies = soup.find_all('div', {'class': 'vacancy-serp-item'})
for vacancy in vacancies:
title = vacancy.find('a', {'data-qa': 'vacancy-serp__vacancy-title'}).text
experience = vacancy.find('span', {'data-qa': 'vacancy-serp__vacancy-experience'}).text
company = vacancy.find('a', {'data-qa': 'vacancy-serp__vacancy-employer'}).text
link = vacancy.find('a', {'data-qa': 'vacancy-serp__vacancy-title'})['href']
print(f'Title: {title}\nExperience: {experience}\nCompany: {company}\nLink: {link}\n')
```
Для улучшения кода и извлечения более подробной информации о вакансиях, можно добавить парсинг других элементов, таких как зарплата, город, требуемые навыки и т.д. Также можно использовать регулярные выражения для более точного извлечения нужных данных.
Для извлечения всех доступных вакансий без ограничения на количество, можно использовать пагинацию и отправлять запросы на следующие страницы, пока они доступны. Можно найти элемент на странице, отвечающий за пагинацию, и извлечь из него количество доступных страниц. Затем можно автоматизировать процесс перехода на следующую страницу и повторять процесс сбора данных.
```python
page = 0
while True:
page_url = f'https://hh.ru/search/vacancy?area=1&st=searchVacancy&text=python&page={page}'
response = requests.get(page_url)
soup = BeautifulSoup(response.text, 'html.parser')
vacancies = soup.find_all('div', {'class': 'vacancy-serp-item'})
for vacancy in vacancies:
# Извлечение данных о вакансиях
if not soup.find('a', {'data-qa': 'pager-next'}): # Проверка наличия следующей страницы
break
page += 1
```
Таким образом, добавив возможность работы с пагинацией, можно извлечь все доступные вакансии с сайта hh.ru.