Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Иванова_Магистерская работа.doc
Скачиваний:
20
Добавлен:
06.02.2016
Размер:
1.02 Mб
Скачать

3.2. Нефункціональні вимоги до програмного продукту

Оскільки розроблювана система інтеграції інтернет-контенту являється вузько направленою, то більш доцільним є використання не громіздкої технології парсингу в контексті створення регулярних виразів для збору і обробки інформації з цільових веб-сайтів.

Парсинг — автоматизований збір контенту або даних з будь-якого сайту або сервісу. Як правило, парсинг проводиться із застосуванням одного з скриптових, серверних мов програмування: PHP, Perl та інших. Результат парсинга найчастіше складається в базу даних, в файл, або видається в форматі XML [8].

Скрипт або програма, що займається, безпосередньо, збором, аналізом і перетворенням необхідної інформації називається парсером.

Парсинг — це, по суті, перетворення «сирої» інформації в дані. Тобто, наприклад, розбір та імпорт RSS стрічки, не є парсингом, оскільки формат RSS є підмножиною стандартного формату XML.

Будь-який парсер складається з трьох частин, які відповідають за три окремих процесу парсинга:

  • отримання контенту в початковому вигляді. Під отриманням контенту, найчастіше мається на увазі скачування коду веб-сторінки, з якої необхідно витягти дані або контент. Одним з найбільш розвинених рішень для отримання коду необхідної сторінки є бібліотека cURL для мови PHP;

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

  • генерація результату. Завершальний етап парсинга. На ньому відбувається виведення або запис отриманих, на другому етапі, даних, в необхідний формат. Найчастіше, запис ведеться безпосередньо в базу даних.

У системі інформаційного моніторингу ринку праці у якості джерел інформації, що буде аналізуватися є три рекрутингових сайти (сайти, що надають змогу розміщувати вакансії та резюме): jobs.ua, job.ukr.net, work.ua. Ці сайти мають різну структуру та наповнення сторінок, отже і побудова регулярних виразів відрізняється для кожного з них.

Так, для jobs.ua побудова регулярних виразів має ряд особливостей.

Посилання на сторінку з вакансіями має наступний вигляд: http://www.jobs.ua/vacancy/search/?todo=search&keywords=XXX&city=0, де XXX — пошукове слово. Це посилання із вставленим пошуковим словом передається бібліотеці cURL для отримання коду сторінки з результатами;

Посилання на кожну окрему вакансію на цьому сайті виглядає так: <a href="/vacancy/view/номер вакансії/" class="def_bl_vac" title="Заголовок посилання"><span style="color:#666666; font-weight:normal;">Вакансия:</span> назва вакансії</a>. Основною ознакою посилання на вакансію в коді сторінки результатів є «class="def_bl_vac"», що означає CSS-приналежність цього елементу. Отже, усі посилання на сторінці з результатами, що мають атрибут «class="def_bl_vac"» є посиланнями на сторінки із вакансіями. Ітеративним методом формується список посилань зі сторінки, які згодом будуть аналізуватися.

Структура сторінки з вакансією має структуру маркованого списку. Виходячи з цього:

Назва компанії знаходиться першою в цьому списку, тому регулярний вираз для цього елементу будується на аналізі першого контейнера <li></li> на сторінці.

Місто компанії-роботодавця знаходиться на другому місці в списку, тому регулярний вираз для цього елементу будується на аналізі другого контейнера <li></li> на сторінці. Оскільки багато назв компаній мають заборонені символи, які можуть порушити роботу бази даних, до функції вилучення компанії-роботодавця зі сторінки додане екранування таких символів.

Заробітна плата знаходиться на третьому місці в списку, тому регулярний вираз для цього елементу будується на аналізі третього контейнера <li></li> на сторінці. Оскільки заробітна плата на сайті подана у декількох варіантах (з позначками $, € або грн.), у функцію вилучення зарплати зі сторінки доданий перебір варіантів цих позначок для коректного приведення заробітної плати до єдиного формату і валюти. Обрана валюта — гривня. Для приведення сумм до єдиної валюти використовується множення на приблизний валютний курс.

Стать знаходиться на четвертому місці в списку, тому регулярний вираз для цього елементу будується на аналізі четвертого контейнера <li></li> на сторінці.

Вік знаходиться на п’ятому місці в списку, тому регулярний вираз для цього елементу будується на аналізі п’ятого контейнера <li></li> на сторінці.

Освіта знаходиться на сьомому місці в списку, тому регулярний вираз для цього елементу будується на аналізі сьомого контейнера <li></li> на сторінці.

Досвід роботи знаходиться на восьмому місці в списку, тому регулярний вираз для цього елементу будується на аналізі восьмого контейнера <li></li> на сторінці.

Посада знаходиться на дев’ятому місці в списку, тому регулярний вираз для цього елементу будується на аналізі дев’ятого контейнера <li></li> на сторінці.

Для сайту job.ukr.net побудова регулярних виразів має наступні особливості:

Посилання на сторінку з вакансіями має наступний виглядhttp://job.ukr.net/vacancy/?ShowSearchResults=1&CityId=0&RegionId=9&Keywords=XXX, де XXX — пошукове слово. Це посилання із вставленим пошуковим словом передається бібліотеці cURL для отримання коду сторінки з результатами;

Посилання на кожну окрему вакансію на цьому сайті виглядає так: <a href="http://job.ukr.net/vacancy/унікальний порядковий номер вакансії/" class="title-info itemTitle " position="0" id="унікальний порядковий номер вакансії">. Основною ознакою посилання на вакансію в коді сторінки результатів є «class="title-info itemTitle "», що означає CSS-приналежність цього елементу. Отже, всі посилання на сторінці з результатами, що мають атрибут «class="title-info itemTitle"» є посиланнями на сторінки із вакансіями. Ітеративним методом формується список посилань зі сторінки, які згодом будуть аналізуватися.

Структура сторінки з вакансією має блочну структуру. Блок з інформацією по вакансії має початок «<div class=”parameters”>». Виходячи з цього:

Назва компанії знаходиться над блоком інформації і має вигляд «<span class=”companyName”>». Регулярний вираз розробляється з врахуванням цієї особливості.

Місто компанії-роботодавця знаходиться на п’ятому місці в списку вкладених контейнерів «<span>», тому регулярний вираз для цього елементу будується на аналізі п’ятого контейнера <span> на сторінці. Оскільки багато назв компаній мають заборонені символи, які можуть порушити роботу бази даних, до функції вилучення компанії-роботодавця зі сторінки додане екранування таких символів.

Заробітна плата знаходиться в окремому блоці «<span class=”salary”>», тому регулярний вираз для цього елементу будується на аналізі цього блоку. Оскільки заробітна плата на сайті подана у декількох варіантах (з позначками $, € або грн.), у функцію вилучення зарплати зі сторінки доданий перебір варіантів цих позначок для корректного приведення заробітної плати до єдиного формату і валюти. Обрана валюта — гривня. Для приведення сумм до єдиної валюти використовується множення на приблизний валютний курс.

Стать як критерій прийому на роботу на цьому сайті відсутня.

Вік знаходиться на четвертому місці в списку в списку вкладених контейнерів «<span>», тому регулярний вираз для цього елементу будується на аналізі четвертого контейнера <span> на сторінці.

Освіта знаходиться на першому місці в списку в списку вкладених контейнерів «<span>», тому регулярний вираз для цього елементу будується на аналізі першого контейнера <span> на сторінці.

Досвід роботи знаходиться на п’ятому місці в списку в списку вкладених контейнерів «<span>», тому регулярний вираз для цього елементу будується на аналізі п’ятого контейнера <span> на сторінці.

Посада знаходиться в окремому контейнері <h1></h1>, тому регулярний вираз для цього елементу будується на аналізі першого такого контейнера на сторінці.

Для сайту work.ua побудова регулярних виразів має наступні особливості:

Посилання на сторінку з вакансіями має наступний виглядhttp://www.work.ua/jobs/?search=xxx, де XXX — пошукове слово. Це посилання із вставленим пошуковим словом передається бібліотеці cURL для отримання коду сторінки з результатами;

Посилання на кожну окрему вакансію на цьому сайті виглядає так: <a href="/jobs/унікальний номер вакансії/" title="заголовок вакансії" class="bf">Назва вакансії</a>.

Основною ознакою посилання на вакансію в коді сторінки результатів є «class="bf"», що означає CSS-приналежність цього елементу. Отже, всі посилання на сторінці з результатами, що мають атрибут «class="bf"» є посиланнями на сторінки із вакансіями. Ітеративним методом формується список посилань зі сторінки, які згодом будуть аналізуватися.

Структура сторінки з вакансією має блочну структуру. Блок з інформацією по вакансії має початок «<div class=”shortInfo”>». Виходячи з цього:

Назва компанії знаходиться над блоком інформації і має вигляд «<dt>Компания:</dt>». Регулярний вираз розробляється з врахуванням цієї особливості.

Місто компанії-роботодавця знаходиться окремо в контейнері «<dt>Регион:</dt>» тому регулярний вираз для цього елементу будується на аналізі цього контейнера. Оскільки багато назв компаній мають заборонені символи, які можуть порушити роботу бази даних, до функції вилучення компанії-роботодавця зі сторінки додане екранування таких символів.

Заробітна плата знаходиться в окремому блоці «<p><span>», тому регулярний вираз для цього елементу будується на аналізі цього блоку. Оскільки заробітна плата на сайті подана у декількох варіантах (з позначками $, € або грн.), у функцію вилучення зарплати зі сторінки доданий перебір варіантів цих позначок для корректного приведення заробітної плати до єдиного формату і валюти. Обрана валюта — гривня. Для приведення сумм до єдиної валюти використовується множення на приблизний валютний курс.

Вік, стать, досвід роботи, освіта знаходяться в окремому маркованому списку в контейнері «<li></li>» і відбираються з коду сторінки засобами перебору варіантів.

Посада знаходиться в окремому контейнері <h1></h1>, тому регулярний вираз для цього елементу будується на аналізі першого такого контейнера на сторінці.