<jupyter_start><jupyter_text>Lesson 03 Парсинг HTML. BS, SQLAlchemy 1. Развернуть у себя на компьютере/виртуальной машине/хостинге MongoDB и реализовать функцию, записывающую собранные вакансии в созданную БД ![Image](screenshot.png) 2. Написать функцию, которая производит поиск и выводит на экран вакансии с заработной платой больше введенной суммы<jupyter_code>from scrapingjob import ScrapingJob
from pprint import pprint
vacancy_db = ScrapingJob('mongodb://172.17.0.2:27017/', 'vacancy', 'vacancy_db')
vacancy_db.print_salary(300_000)<jupyter_output>{'_id': ObjectId('5d89d0fb97faf8415e0e9914'),
 'city': 'Москва',
 'company_name': ' DataFork ',
 'metro_station': 'Площадь Революции',
 'salary_currency': 'RUB',
 'salary_max': 400000,
 'salary_min': 300000,
 'site': 'hh.ru',
 'vacancy_link': 'https://hh.ru/vacancy/33498645',
 'vacancy_name': 'Data Engineering Team Lead (Python / C++)'}
{'_id': ObjectId('5d89d0fb97faf8415e0e9918'),
 'city': 'Санкт-Петербург',
 'company_name': ' Cindicator ',
 'metro_station': 'Гостиный двор',
 'salary_currency': 'RUB',
 'salary_max': 400000,
 'salary_min': None,
 'site': 'hh.ru',
 'vacancy_link': 'https://hh.ru/vacancy/31182158',
 'vacancy_name': 'Python разработчик / Python software developer'}
{'_id': ObjectId('5d89d0fb97faf8415e0e9923'),
 'city': 'Москва',
 'company_name': ' Cindicator ',
 'metro_station': None,
 'salary_currency': 'RUB',
 'salary_max': 400000,
 'salary_min': None,
 'site': 'hh.ru',
 'vacancy_link': 'https://hh.ru/vacancy/33416348',
 'vacancy_name': 'Python разработчик / Python soft[...]<jupyter_text>3. \* Написать функцию, которая будет добавлять в вашу базу данных только новые вакансии с сайта<jupyter_code>vacancy_db.collection.update_one({'vacancy_link': 'https://hh.ru/vacancy/31828023'}, 
                                 {'$set': {'city':'Москва', 'company_name':'some compary'}})
objects = vacancy_db.collection.find().limit(1)
for obj in objects:
    pprint(obj)
vacancy = 'Python'
vacancy_db.search_job(vacancy)
objects = vacancy_db.collection.find().limit(1)
for obj in objects:
    pprint(obj)<jupyter_output>{'_id': ObjectId('5d89d0fa97faf8415e0e98e5'),
 'city': 'Санкт-Петербург',
 'company_name': ' LG Electronics Inc. ',
 'metro_station': 'Чернышевская',
 'salary_currency': None,
 'salary_max': None,
 'salary_min': None,
 'site': 'hh.ru',
 'vacancy_link': 'https://hh.ru/vacancy/31828023',
 'vacancy_name': 'Программист Python / C++'}
{'fraction_non_alphanumeric': 0.16275236918005767, 'fraction_numerical': 0.060980634528224144, 'mean_word_length': 6.078717201166181, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 1, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '237196', 'license': 'MIT', 'n_tokens_mistral': 1100, 'n_tokens_neox': 1031, 'n_words': 185, 'path': 'lesson_03/lesson_03.ipynb', 'repo_name': 'SAGluschenko/Methods-of-collecting-and-processing-data-from-the-Internet', 'size': '2427'}