Разработка программного обеспечения по поиску вакансий для работодателей и ищущих работу с использованием параллельного поиска на различных интернет-ресурсах

Блок-диаграмма начального этапа разработки программного приложения. Парсинг - синтаксический анализ участка кода с целью работы с конкретными его частями. Методы решения проблемы ограничения частоты параллельной отправки запросов на различные сайты.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.07.2017
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Введение

Тема данного проекта: “Разработка программного обеспечения по поиску вакансий для работодателей и ищущих работу с использованием параллельного поиска на различных интернет-ресурсах.”. Стоит сразу заметить, что проблема поиска вакансий одновременно на нескольких ресурсах актуальна для поиска любой работы и увеличивает время, затрачиваемое пользователем на использование интернет-ресурсов по поиску вакансий. Целью проекта является разработка программного обеспечения, организовывающего поиск вакансий на интернет-ресурсах, путём отправки нескольких параллельных запросов на различные популярные сервисы. Программа выводит на пользовательский интерфейс список вакансий, найденных на разных интернет-ресурсах, соответствующих запросу пользователя.

1. Общая часть

1.1 Постановка задачи

Разработка программного обеспечения по поиску вакансий для работодателей и ищущих работу с использованием параллельного поиска на различных интернет-ресурсах.

1.2 Цели задачи

Целью дипломного проекта является разработка простого, быстрого и удобного в использовании программного обесепечениядля быстрого поиска вакансий в соответствии с предпочтениями пользователя.

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

1.3 Актуальность и новизна

Тема актуальна и может представлять интерес как для широкого круга общественности, так и для узкого круга лиц, испытывающих проблемы с поиском места работы в интернете. В современных условиях, поиск работы через интернет и социальные сети становится всё более и более актуальным и быстрым способом найти вакансию/подработку, однако на него уходит много времени. Различные интернет-ресурсы, такие, как headhunter.ru, rabota.ru, superjob.ru, career.ru и другие, быстро приобрели популярность, но выдаваемые результаты часто отличаются друг от друга. К примеру по поиску вакансии "программист python" каждый сайт будет выдавать свой список вакансий, сформированный в соответствии со своей базой данных, хотя варианты на разных сайтах могут порой совпадать. Выставить вакансию на один или сразу несколько таких сервисов очень выгодно кадровикам и кадровым агенствам в той или иной фирме, в связи с этим, у соискателя встаёт проблема параллельного поиска места работы на сразу нескольких интернет-ресурсах. Актуальность дипломной работы заключается в унифицировании и ускорении процесса поиска на интернет-ресурсах вакансий и мест подработок. Актуальность темы дипломной работы связана со значительным распространением такого явления и заключается в необходимости разработки способа ускорения и распараллелевания поиска в рассматриваемой области.

2. Обзор и анализ аналогов

Если рассматривать задачу поиска вакансий в Интернете со стороны программного обеспечения, то уже почти каждый из наиболее популярных соответствующих ресурсов имеет своё мобильное приложение.

2.1 Мобильное приложение headhuner.ru

Самый популярный на данный момент сервис headhunter.ru имеет собственное приложение по поиску вакансий, изображённое на Рис. 1. Поиск производится только на своём интернет-ресурсе и подконтрольному сервису Career.ru. Оно позволяет быстро находить вакансий по нужным пользователю параметрам.

Рис. 1. Приложение для мобильных устройств hh.ru

Достоинством является наибольшая популярность среди людей в России и обширная база данных. Недостатком является обязательная регистрация для составления резюме и отсутствие синхронизации базы данных с другими интернет-сервисами по поиску вакансий (кроме Career.ru)

2.2 Мобильное приложение Rabota.ru

Особенностью данного мобильного приложения является возможность поиска вакансий сразу по нескольким городам (например: Директор, 150 000, Москва, Санкт-Петербург), что значительно расширяет диапазон предложений. Из недостатков можно отметить снижающаяся популярность по сравнению с другими сервисами.

Рис. 2

Приложение rabota.ru, изображённое на Рис. 2 является конкурентом сервису headhunter.ru и так же оперирует только со своей базой данных.

2.3 Мобильное Приложение Monster

Это приложение не так популярно, но тоже позволяет находить вакансии. Сделано иностранным сервисом Monster Worldwide Inc., занимающимся поиском вакансий в различных регионах, интерфейс, как и сам сервис полностью на английском языке. Из достоинств можно подчеркнуть возможность поиска работы заграницей и многоязыковой интерфейс.

Из недостатков можно отметить малую популярность в России и необходимость владения иностранными языками.

Рис. 3. Приложение Monster

На Рис. 3 виден пользовательский интерфейс приложения Monster на мобильном устройстве компании Apple. Приложение работает так же и на ОС Android

2.4 Приложение superjob.ru

Приложение от российского популярного сервиса по поиску вакансий. Приложение показывает и название и должности и зарплату и главное - время последнего обновления вакансии, что весьма удобно. Приложение изображено на Рис. 4.

Рис. 4. Приложение superjob.ru

Из особенностей можно подчеркнуть возможность звонить работодателю прямо не выходя из приложения.

2.5 Приложение JobFine

Приложение позволяет искать вакансии в базе без регистрации, но вся информация и контакты находятся в свободном доступе. Пройдя регистрацию в приложении можно создать резюме и отправить по заинтересовавшим вакансиям. У работодателей так же присутствует возможность просматривать профиль.

Рис. 5. Приложение JobFine

Достоинством данного приложения является возможность связаться с интересующими пользователя вакансиями непосредственно из приложения. Из недостатков можно отметить обязательную регистрацию для отправки резюме.

2.6 Сайт YouDo

Существует так же множество различных ресурсов по поиску вакансий или даже разовых подработок, которые на данный момент не пользуются популярностью среди своих конкурентов, однако тоже активно функционируют и развиваются.

Примером поиска разовой подработки, а так же по поиску услуги служит сервис YouDo, изображённый на Рис. 6.

Рис. 6. Сайт youdo.com

Идея сервиса звучит как "я плачу, вы делаете", представляя таким образом систему "квестов". Сервис позволяет найти как разовую подработку, дальновидый контракт, так и самому заказать услугу на сервисе, от простого курьера и до крупных инженерных проектов. Главным достоинством можно назвать новизну сервиса, так как на данный момент это единственный достойный сервис для поиска разовых заданий. Так же исполнителей строго проверяют на адекватность и знакомство с правилами сервиса, что по большей части исключает случаи мошенничества или халтуры. Из главных недостатков, в то же время стоит отметить необходимость вкладывать собственные деньги для регистрации на выполнение задания и для его публикации на сервисе.

2.8 Предложения Avito

Изначально - сервис Авито предназначался для продажи различных товаров, вещей бывшего употребления и автомобилей, но позже появился специальный раздел "Объявления Авито", включающий в себя так же и поиск вакансий. Приложение изображено на Рис. 7.

Рис. 7. Работа Avito

Главным достоинством стоит назвать мультизадачность сервиса, а главным недостатком - непроверенная база пользователей и возможное мошенничество с их стороны. Так же приложение довольно не стабильно, и вылетает на версиях ОС Android младше 4.1.2.

Существует так же множество различных ресурсов по поиску вакансий, которые на данный момент не пользуются популярностью среди своих конкурентов или не рассматриваются как целенаправленные средства по поиску вакансий в Интернете.

Далее приведена таблица сравнительного анализа достоинств и недостатков каждого приведённого сервиса.

Таблица 1. Сравнение сервисов по поиску вакансий

Достоинства

Недостатки

Популярный. Большая база данных. Владеет сервисом Career.ru. Оформлен и презентабелен. Развивается.

Производит поиск только в своей и подконтрольной базе данных ресурса. Часто "вакансиии перемещены в архив". Частые отказы сервиса.

Удобный дизайн интерфейса. Быстрый поиск вакансий.

Теряет популярность. Отрицательные отзывы на приложение. Многие работодатели даже не просматривают отзывы.

Возможность поиска работы заграницей.

Необходимо знать иностранный язык.

Популярный. "Живость"сайта.Регулярно обновляется

Работодатели часто не звонят. Плохие отзывы. Платное (дорогое) размещение вакансий. Платный просмотр контактов в резюме.

Вакансии открыты для просмотра. Высылает на почту отчёт о просмотрах резюме пользователя.

Низкая популярность. Необходимо зарегистрироваться, чтобы полностью раскрыть услуги. Мало информации.

Быстрая разовая подработка. Серьёзный отбор исполнителей. Исполнителем или заказчиком может стать абсолютно каждый.

Наличие платного контента. Наличие системы подписок. Возможное мошенничество со стороны исполнителей.

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

Плохая систематизация объявлений сильно затрудняет поиск работы. Много мошенников.

3. Специальная часть

3.1 Стадии разработки проекта

Условно, разработку проекта можно разделить на три части. Далее будет приведён список действий, выполненных в процессе разработки программного обеспечения по поиску вакансий на различных интернет-ресурсах, с приведением блок-диаграмм для представления структуры.

На начальной стадии разработки программы была произведена оценка актуальности работы, поиск аналогов программы с последующим занесением в таблицу для сортировки сервисов и выбора четвёрки лучших из них для работы в программном обеспечении. Так же был произведён выбор языка программирования и среды разработки к выбранному языку программирования.

Далее приведена блок-диаграмма начального этапа разработки программы, с уходом в связь с главным этапом разработки.

Рис. 8.

3.2 Основной этап разработки

После прохождения начального этапа разработки, наступает главный этап разработки программного обеспечения, включающий в себя:

· Поиск необходимых инструментов и библиотек,

· Разработку алгоритма отправки запроса и парсинга полученного html-кода страницы,

· Выборка критериев, которые позже будут переданы для отображения и работы в графическом интерфейсе пользователя,

· Контроль, решение и предотвращение всевозможных ошибок, неисправностей или вылетов программы,

· Создание тестового варианта пользовательского интерфейса, который будет только отображать полученные результаты, для большей наглядности чем команда print() языка Python внутри выбранной среды разработки PyCharm.

Рис. 9. Основной этап разработки

Далее следует переход из разработки главной части программы в оптимизацию работы программы, интерфейса и контроль возможных ошибок и неисправностей.

3.3 Оптимизация работы ПО и его усовершенствование

В процессе оптимизации работы программного обеспечения были подготовлены кнопки для управления отображением и работы с интерфейсом, а так же создан алгоритм очереди запросов для более комфортного листания страниц и их отображения. Процесс работы над финальной стадией проекта проиллюстрирован на Рис. 10. Был оптимизирован интерфейс и решены все возможные проблемы с отображением или работой с интерфейсом. Так же был закомментирован код для приведения наиболее важных его частей в пояснительной записке к выпускной квалификационной работе.

Рис. 10. Финальная стадия разработки программы

4. Научная теория

4.1 Парсинг

Парсинг-- это своего рода «синтаксический анализ» участка кода с целью работы с конкретными его частями. Парсинг html-страниц является бессмертной и самой распространённой задачей любого фрилансера - задача разобрать и преобразовать в осмысленные единицы нечто, написанное на некотором фиксированном языке, будь то язык программирования, язык разметки, язык структурированных запросов или простой код html-страницы.

Прежде всего стоит уточнить, что в данном проекте присутствует большое количество работы с html-кодом, но каждый браузер волен его изменять/дорабатывать по своему. Так например исходный кодhtmlстраницы будет отличаться от того, который можно просмотреть используя средство просмотра кода страницы Google Chrome или Mozilla Firefox.

Типичная последовательность этапов решения рядовой задачи по парсингу выглядит примерно так:

1. Описать язык. Прежде всего, необходимо определиться, какая именно поставлена задача. Как правило, описание языка -- это очередная вариация формы Бэкуса-Наура. Стоит отметить, что при этом устанавливаются не только правила «построения предложений» в используемом языке, но и правила определения подходящих слов.

2. Разбить ввод на теги (или токены). Для этого нужно написать лексический анализатор, либо (в нашем случае) использовать готовую библиотеку языка Python, которая разбивает входную строку или файл на последовательность тегов, то есть подходящих слов нашего языка. Если рассматривать конкретно данный проект, то при отправке запроса мы получаем код html-страницы (чистый, без примесей работы браузера).

3. Проверить полученный код (синтаксис), разобрать на теги и построить синтаксическое дерево тегов. Проверить, соответствует ли последовательность тегов описанию нашего языка.

4. Выполнить саму задачу. Теперь, при наличии синтаксического дерева, наконец можно реализовать задачу, поставленную программисту, будь то подсчёт значения арифметического выражения, отправка запроса в базу данных, компиляция программы, отображение веб-страниц или в нашем случае - вытягивание из них необходимой информации.

4.2 Параллелизм

Параллелизм помогает получить данные как можно быстрее, однако, запустив, к примеру, 200 параллельных запросов, можно только разозлить владельца хоста и не стоит допускать более пяти одновременных запросов.

В разработке данного программного обеспечения была использована библиотека grequests. В простейшем случае для запуска одновременных запросов достаточно всего пары строк для распараллеливания кода, что являлось одним из самых весомых критериев на этапе выбора языка разработки. Однако, в данной работе это было реализовано сложнее.

4.3 CSS Селекторы

При построении дерева тегов и парсинга html страницы, была использована библиотека xPath селекторов, однако, если имеется опыт работы с javascript, то иногда, удобнее делать выборки при помощи CSS селекторов. В качестве аналога, так же можно использовать PyQuery - аналог jQuery, библиотеки JavaScript, фокусирующаяся на взаимодействии JavaScriptи HTML.На языке Python, и xPath и css_to_xpath принадлежат библиотеке lxml.

LXML - это XML\HTML парсер, который будет использован для извлечения всей необходимой информации из выбранной веб-страницы. В качестве аналога. можно рассматривать парсер BeautifulSoup, так же разработанного для синтаксического разбора файлов HTML/XML, полностью написанный на Python.

4.5 Краулинг и Парсинг

Краулинг (англ. Crawling) представляет из себя самый обыкновенный тип парсера, при котором ссылку на следующую страницу мы получаем с той, на которой находимся в данный момент. Таким образом. Краулинг представляет из себя поискового робота, выполняющий, к примеру задачу зайти на сайт, получить все ссылки, перейтипо ним, получить остальные ссылки и т.д. Краулинг обычно используется для создания больших баз данных.

Примеры:

· Краулинг категорий на сайте ebay (кстати у них есть API)

· Краулинг контактных данных из телефонных справочников

4.6 Обходы возможных проблем

При разработке программного обеспечения были разработаны сценарии поведения программы, и с их помощью, были разработаны методы предотвращения возникновения и решения различных проблем.

Ошибка 403 / ограничения по частоте запросов.

При параллельной отправке запросов на различные сайты, может возникнуть проблема превышения допустимых лимитов (границ), с последующей блокировкой доступа к сайту. При разработке данного программного обеспечения стоило учесть, что при превышении количества запросов к сайту, сайт может принять программу за поискового "робота" и заблокировать ему доступ к сервису.

Решение простое, следует просто ограничивать количество одинаковых запросов на один сайт, при условии что это не запрос перелистывания страницы, а изначальный запрос. В случае, если пользователь всё же был заблокирован сайтом (что мало вероятно), следует просто переждать несколько минут. Обусловлено это тем, что программа показывает сайту что она - не запрос, а простой интернет-браузер..

Пагинация.

Бывают случаи, когда приходиться парсить html-данные, разбитые по разным страницам. Способ решения такой проблемы довольно прост: если посмотреть на URL-адреса, то там, как правило, присутствуют параметры pageили offset, которые отвечают за номер страницы. В ходе разработки программного обеспечения, почти на каждом выбранном сервисе была именно эта проблема.

Рис. 11. Пример параметра Page на сайте headhunter.ru

5. Техническая часть

5.1 Выбор языка программирования и средств разработки

Целью работы является разработка программного обеспечения, так что встаёт вопрос выбора языка программирования и среды разработки.

Ruby.

Достоинства:

· Позволяет использовать регулярные выражения.

· Считается ООП языком высокого уровня.

· Обладает высоким уровнем абстракции.

Недостатки:

· Довольно низкая скорость выполнения (особенно в сравнении с javascript).

· Не кроссплатформенный (всё заточено под Unix).

Javascript.

Достоинства:

· Возможность изменять страницы браузеров.

· Действия с cookie-файлами.

· Ни один современный браузер не обходится без javascript.

· Комбинируя отдельные функции, парсящие кусочки входного текста, можно получить более сложные функции, парсящие более сложные тексты.

Недостатки:

· Пониженный уровень безопасности, ввиду повсеместного и свободного доступа к исходным кодам популярных скриптов.

· Часть активно используемых программ перестанут существовать при отсутствии языка, поскольку целиком базируются на нём.

PHP.

Достоинства:

· Считается самым популярным языком для Интернета, исполняемый на стороне веб-сервера.

· Поддерживается большинством пользователей и разработчиков.

· Имеет развитую поддержку баз данных.

· Может использоваться в изолированной среде.

Недостатки:

· Не подходит для создания десктопных приложений или системных компонентов.

· Имеет слабые средства для работы с исключениями.

· Медленнее своих динамических собратьев.

· Веб-приложения, написанные на PHP, зачастую имеют проблемы с безопасностью.

Python.

Достоинства:

· Наличие серьёзных, гибких готовых библиотек, в разы ускоряющих работу.

· Абсолютно всё в Python является объектами в смысле ООП.

· Простой и удобный синтаксис, вынуждающий программиста красиво писать код.

· Встроенные структуры данных, словари, кортежи.

Недостатки:

· Отсутствуют встроенные современные типы данных.

· При разработке программ с повышенным требованием к скорости, Python проигрывает по скорости С++, Java и др.

Perl.

Достоинства:

· Встроенные средства для работы со сложными структурами.

· Свободный синтаксис.

· Работа с регулярными выражениями.

· Кроссплатформенность.

Недостатки:

· Для решения некоторых задач часть преимуществ языка Perl превращаются в недостатки.

· Большое количество модулей затрудняет их поиск, что не нравится программистам, которым из всего многообразия нужны лишь пара конкретных.

Так, как программное обеспечение будет во многом касаться работы с сайтами и интернет-сервисами, я решил выбрать один из наиболее универсальных и активно развивающихся в этой сфере языков программирования и изучить его с нуля, я выбрал Python (3.6.x). Python это один из скриптовых языков, и, как правило, требует меньше линий кода и меньше различных хитростей, для написания специфической задачи, в сравнении с другими языками программирования. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:

· Google.

· Dropbox.

· Mozilla.

· Facebook.

· Yandex.

Что такое Python?

Python это серверный, интерпретируемый, некомпилируемый скриптовый язык с открытым исходным кодом. Может использоваться как самостоятельно. так и в составе любого другого фреймворка (например django). По сравнению с другими языками программирования, Python упрощает и ускоряет такие вещи как создание сайтов, обеспечение доступа к БД, построение графических пользовательских интерфейсов а так же работа с интернет-ресурсами. У Python так же есть ряд своих недостатков, одним из которых является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим конкурентам (C/C++, Java, Go). Что касается динамических языков программирования (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си.Python также обладает огромным выбором библиотек, что так же оптимизирует процесс разработки проекта, занимающегося парсингом интернет сайтов на этом языке программирования.

5.2 Выбор среды разработки и используемых библиотек

В качестве среды разработки, я выбрал наиболее современную и популярную среду разработки Python - PyCharm, которая использует интерпретатор питона. Для подключения дополнительных пакетов, в среду разработки PyCharm был подгруженкомплект пакетов (дата-платформа) Anaconda и библиотека grequests. В создании рабочего варианта графического интерфейса пользователя былаиспользована библиотека tkinter, ввиду своей простоты и кросс-платформенности. В Табл. 2. проиллюстрированы используемые библиотеки и что они из себя представляют.

Таблица 2. Используемые библиотеки

Tkinter

Графическая библиотека, позволяющая создавать программы с оконным интерфейсом. Кросс-платформенна для Windows, Linux, MacOSXи др.

Requests

Библиотека для выполнения HTTP-запросов, как аналог urllib2/urllib3, значительно упрощающая кодинг.

Grequests

Grequests позволяет использовать Requests с Gevent, чтобы значительно упростить асинхронные HTTPзапросы.

LXML

Быстрая и гибкая библиотека для обработки разметки XMLи HTNK на Python.

Gevent

Сетевая библиотека, которая используя гринлеты (greenlets), предоставляет синхронное API поверх цикла событий от libevent.

6. Программная часть

6.1 Структура программы

Программа состоит из четырёх модулей: morda.py, config.py, parsers.py и requesting.py.

Модуль morda.py отвечает за инициализацию всех виджетов и включает в себя следующие методы:

· Метод, перезагружающий все атрибуты, хранящие состояние интерфейса для конкретной вакансии.

· Метод, с помощью которого можно получить часть списка всех выкачанных вакансий для отображения в интерфейсе, соответствующую текущей странице выдачи.

· Метод, подгружающий следующую (относительно текущего состояния поисковой выдачи) страницу выдачи для всех сайтов, представленных в агрегаторе.

· Обработчик для кнопки "Найти!".

· Метод, проверяющий, отличается ли указанная в запросе вакансия от той, для которой делался предыдущий запрос.

· Подсчитываем, закончатся ли данные для отображения в интерфейсе на следующем шаге (если да - пора подгрузить еще).

· Обработчик для кнопки "назад" в выдаче (данные не перезагружаются) и кнопки вперёд.

· Управляет отображаем в виджет Text списка вакансий.

Модуль config.py - это конфигурационный файл, который содержит в себе правила, по которым осуществляется работа с источником. Каждый источник описывается набором из следующих сущностей:

· URL запроса - без параметров запроса, но, при необходимости, с символами форматирования (такое может понядобиться, например, если название и прочие параметры поиска передаются не в виде параметров запроса).

· Параметры запроса - "дефолтный" набор параметров запроса (перед отправкой запроса может быть модифицирован - настройка сделана для удобства задания параметров, нужных постоянно).

· Заголовки -- гибкости ради, для каждого источника свои.

· Функцию, которая на основе базового урла и словаря параметров составляет правильный запрос конкретной страницы для конкретной профессии.

Модуль parsers.py - это класс, выступающий в роли неймспейса для функций-парсеров. Все функции принимают в качестве аргумента текст html-страницы, а возвращают массив экземпляров класса Vacancy, описывающих найденные вакансии.

Модуль requesting.py использовался при отладке работы программы, осуществляет работу с библиотеками requests и grequests.

6.2 Графический интерфейс пользователя

Графический интерфейс пользователя выполнен в виде оконного приложения и довольно прост. На этапе ввода запроса пользователя, в оконном приложении существует два окна, как проиллюстрировано на Рис. 12.

Рис. 12. Пользовательский интерфейс на начальном этапе работы

Далее, после нажатия на кнопку "Найти!", запрос передаётся в файл requesting.py, который в свою очередь обращается в файл parsers.py. После этого, полученный результат выводится в нижнюю часть графического интерфейса пользователя с указанием выбранной информации , а именно: работодатель. зарплата, описание вакансии со ссылкой, доступной для клика, как проиллюстрировано на Рис. 13.

Рис. 13. Вывод информации на интерфейс пользователя

При этом, не только кнопки становятся рабочими для переключения страниц, но и само нижнее окно интерфейса пользователя можно прокрутить колёсиком мышки. При каждом втором нажатии на кнопку перелистывания, посылаются следующие запросы, что сделано для более комфортного отображения вакансий на интерфейса. Сделано это в связи с тем, что в качестве ответа мы получаем от 60 до 80 ответов, которые проблематично комфортно расположить на одной странице.

При создании графического интерфейса пользователя, было предусмотрено решение и предотвращение различных ошибок ввода. При работе с программой, если пользователь ничего не введёт в поле, программа выдаст ошибку, что поле не заполнено. Если же пользователь ввёл не корректные данные, программа выведет ошибку, что никаких результатов найдено не было. Данные сценарии срабатывают только при наличии ошибки как таковой, и никак не помешают работе программы, если были введены корректные данные.

На Рис. 14, проиллюстрирован сценарий работы обработчика кнопки "Найти!" при работе графического интерфейса пользователя.

Рис. 14. Обработчик для кнопки "Найти!"

7. Тестирование проекта

Пользователь запускает модуль morda.py , на экран выводится интерфейс пользователя, где пользователь вводит запрос. Для примера рассмотрим "программист С++". Вводим запрос в поле "кем вы хотите работать?" и нажимаем кнопку "Найти!" которая вызывает обработчик. На Рис. 15 приведена иллюстрация экрана ввода запроса.

Рис. 15. Экран ввода запроса

Далее, вызывается обработчик кнопки "найти", работа которого проиллюстрирована в виде блок-диаграммы на Рис. 14. Обработчик выполняет свою функцию, и выводит на экран список из 15 вакансий (в ответ от сайта мы получаем 30), для комфортного отображения информации. Ссылки, выделенные синим являются доступными для клика и при клике на них, происходит переотправка на сайт-первоисточник. Полученный вывод в соответсвтии с запросом "программист С++" проиллюстрирован на Рис. 16.

Рис. 16. Ответ, полученный на запрос поиска вакансии "программиста С++"

Нижнее поле так же является прокручиваемым колёсиком мышки, хоть и нет привычного "ползунка" windows, это реализовано для более комфортного отображения информации.

При нажатии на кнопку далее, на экран выводятся следующие 15 вакансий, в результате при каждом втором нажатии мы переходим на вторую страницу (посылается новый запрос) на сайт-первоисточник.

8. Практическое внедрение

Дальнейшая работа предполагает расширение количества используемых интернет-ресурсов, редизайн интерфейса, оптимизация работы программы в качестве дочерней через другие приложения с последующей в завершении попыткой продажи программы клиентам, использующим фрилансеров в качестве рабочей силы для создания различных сайт-парсеров.

Заключение

программный парсинг запрос сайт

Результатом работы является рабочая версия программы по поиску вакансий на различных интернет-ресурсах, позволяющее параллельно искать вакансии на нескольких сайтах. Система состоит из 4 модулей Python с расширением .py.

Система позволяет быстро и просто найти вакансии соответствующие запросу пользователя параллельно одновременно на четырёх сайтах, hh.ru, rabota.ru, superjob.ru и career.ru. Так же предусмотрено предотвращение вылетов, ошибок, и некорректного ввода информации.

Система так же поддерживает стабильную работу на операционной системе Linux, Windows и Mac OS, однако требует наличия интерпретатора Python. Все используемые в программе библиотеки, их методы, компоненты, классы и атрибуты документированы, и их описание широко доступно в интернете.

Работа так же обладает практическим применением. Из работы была вынесена практическая польза так, как работа по сайт-парсингу является доминирующей среди заказов фрилансерам, и может быть использована в другом, более крупном проекте. На текущий момент на русскоязычных биржах можно найти до двадцати предложений в день.

Список использованной литературы

1. Брайан У. Керниган, Деннис М. Ритчи. Язык программирования С. 2013.

2. Oracle. JavaTM Platform, Standard Edition 6 API Specification. 2015.

3. Олег Цилюрик. Тонкости использования языка Python: Часть 1. Версии и совместимость. 2013.

4. Крис Пайн: Учебник по языку Ruby - Учись программировать, перевод М. Шохирев. 2017.

5. Prechelt L., 2000. An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl. IEEE.

6. Bryan M., 1998. An introduction to the extensible markup language (XML) // Bulletin of the American Society for Information Science and Technology. 25, 11-14.

7. Митчелл Р. Скрапинг веб-сайтов с помощью Python: сбор данных из современного интернета Митчелл Р. ДМК Пресс. 2016.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.