import requests
from bs4 import BeautifulSoup
import telegram
# Replace 'TOKEN' with your own Telegram bot token
bot = telegram.Bot('token')
# Function that searches for job postings based on a job title
def search_jobs(job_title):
# URL to search for job postings with the given job title on hh.ru
url = f'https://hh.ru/search/vacancy?area=1&fromSearchLine=true&st=searchVacancy&text={job_title}'
# Send a GET request to the URL and parse the HTML content using BeautifulSoup
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Find all job postings on the page
job_list = soup.find_all('div', class_='vacancy-serp-item')
# If no job postings were found, return None
if not job_list:
return None
# Extract information about each job posting and store it in a dictionary
jobs = []
for job in job_list:
job_title = job.find('a', class_='bloko-link HH-LinkModifier').text.strip()
job_url = job.find('a', class_='bloko-link HH-LinkModifier')['href']
job_location = job.find('span', class_='vacancy-serp-item__meta-info').text.strip()
job_description = job.find('div', class_='g-user-content').text.strip()
jobs.append({'title': job_title, 'url': job_url, 'location': job_location, 'description': job_description})
# Return a list of dictionaries containing job posting information
return jobs
# Function that sends job search results to a Telegram chat
def job_search(update, context):
# Get the job title from the command arguments and search for job postings
job_title = ' '.join(context.args)
jobs = search_jobs(job_title)
# If job postings were found, send a message with information about each posting
if jobs:
for job in jobs:
message = f"{job['title']}\n{job['url']}\nLocation: {job['location']}\nDescription: {job['description']}"
context.bot.send_message(chat_id=update.effective_chat.id, text=message)
# If no job postings were found, send a message saying so
else:
context.bot.send_message(chat_id=update.effective_chat.id, text="No jobs found for this position")
# Replace 'TOKEN' with your own Telegram bot token
updater = telegram.ext.Updater('token')
# Add a command handler for the '/job' command that calls the job_search function
updater.dispatcher.add_handler(telegram.ext.CommandHandler('job', job_search))
# Start the bot's polling loop
updater.start_polling()
# Keep the bot running until it is stopped manually or by an error
updater.idle()