- •Міністерство культури України
- •Аннотация
- •Annotation
- •Розділ 1.On-line контент. Основні поняття та визначення
- •1.1. On-line контент. Основні визначення
- •1.2. Класифікація on-line контенту
- •1.3. Використання on-line контенту
- •1.4. Розділ 2. Аналізon-lineконтенту
- •2.1. Концепції та методи аналізу
- •Потік e-mail
- •Оперативна база даних Ретроспективна база даних
- •2.2. Архітектура систем аналізу
- •Вилучення Веб-контенту
- •2.3. Технології аналізу
- •Тип, Значення
- •Лексичний аналізатор
- •3.1. Функціональні вимоги до програмного продукту
- •3.2. Нефункціональні вимоги до програмного продукту
- •3.3. Алгоритми аналізу
- •3.4. Інтерфейс програмного продукту
- •Пошук запиту
- •Завантаження результатів усіх запитів
- •Завантаження результатів поточного запиту
- •3.5. Тестування програмного продукту
- •3.6. Техніко-економічне обґрунтування
- •3.7. Охорона праці
- •3.7.1. Правові питання охорони праці
- •3.7.2. Організація і обладнання робочих місць користувачів пк з точки зору охорони праці
- •3.7.3. Характеристика виробничого середовища і чинники, що діють на оператора в процесі його праці
- •3.7.4. Вимоги електричної та пожежної безпеки
- •Висновки
- •Список використаних джерел
- •Додаток а Лістинг програми
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>, тому регулярний вираз для цього елементу будується на аналізі першого такого контейнера на сторінці.