Главная страница
Навигация по странице:

  • ЗАДАНИЕ № ____

  • Техническое задание Введение

  • 1.2. Основания для разработки

  • 1.3. Назначение разработки

  • 1.4. Требования к программе или программному изделию

  • 2. Описание разработки

  • 2.2. Функциональное описание разработки


  • 3. Описание пользовательского интерфейса

  • 4. Тестирование программы

  • 6. Руководство программиста Установка программы, необходимые программные и аппаратные средстваЗаключение

  • Курсовая работа_Ява. Разработка html парсера с помощью объектноориентированного языка программирования Java


    Скачать 434.43 Kb.
    НазваниеРазработка html парсера с помощью объектноориентированного языка программирования Java
    Дата22.04.2018
    Размер434.43 Kb.
    Формат файлаdocx
    Имя файлаКурсовая работа_Ява.docx
    ТипКурсовая
    #41877

    МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА

    РЕСПУБЛИКИ КАЗАХСТАН
    Казахский агротехнический университет им. С. Сейфуллина
    Кафедра «Информационные системы»

    КУРСОВАЯ РАБОТА


    На тему «Разработка html парсера с помощью объектно-ориентированного языка программирования Java»
    по дисциплине «Программирование на языке Java»

    Выполнил студент группы

    ИС-305

    Елькеев Айдар
    Проверила

    Жумаханова А. С.

    Астана 2017

    Казахский агротехнический университет им. С. Сейфуллина

    Кафедра «Информационные системы»

    УТВЕРЖДАЮ

    Заведующий кафедрой

    «Информационные системы»

    ____________ Исмаилова А.А.

    «____»____________2017г.

    ЗАДАНИЕ ____

    на курсовую работу по дисциплине

    «Программирование на языке Java»
    Студент Елькеев Айдар группы ИС-305

    Тема работы «Разработка html парсера с помощью объектно-ориентированного языка программирования Java»

    Исходные данные: учебная и научная литература, лекции, методические указания к выполнению лабораторных работ
    Литература:
    1. Картузов А.В. Программирование на языке JAVA. 2011г

    2. Монахов, В.В. Язык программирования Java и среда NetBeans : [учеб. пособие] / В.В. Монахов. - 3-еизд., перераб. и доп. - СПб. : БХВ-Петербург, 2012. - 703 с.

    3. Семочкин, А.Н. Язык программирования Java : учеб.пособие для вузов / А.Н. Семочкин ; М-во образования и науки РФ, Федеральное агентство по образованию [и др.]. - 2-е изд., перераб. И доп. - Благовещенск : Изд-во БГПУ, 2011. - 89 с.

    4. Интернет-источник: JAVA-приложение. www.helloworld.ru/texts/comp/lang/java/java5/index.html

    5. Учебно-методический практикум по дисциплине "Информационные технологии в экономике" / ГАЙДУК Н.В. ; Куб. гос. аграр. ун-т, Каф. информационных систем. - Краснодар : КубГАУ, 2008. - 299с

    Дата выдачи задания 22.03.2017 г., дата защиты работы 23.05.2017 г.
    Руководитель работы Жумаханова А.С.______________
    Задание принял к исполнению ______________________________________

    Содержание
    Введение……………………………………………………………………………...4

    1. Техническое задание………………….…………………………………………..5

    1.1. Введение…...…………………………………………………………………….5

    1.2. Основания для разработки………………………...……………………………5

    1.3. Назначение разработки……………...………………………………………….6

    1.4. Требования к программе или программному изделию……...………………..6

    2. Описание разработки……………………………………...……………………...7

    2.1. Структурное описание разработки…………………...………………………..7

    2.2. Функциональное описание разработки…………...…………………………...9

    3. Описание пользовательского интерфейса………...……………………………11

    4. Тестирование программы………………………...……………………………..14

    5. Руководство пользователя……………………...……………………………….16

    6. Руководство программиста…….……………...………………………………...18

    Заключение………………………………………………………………………….20

    Список литературы…………………………………………………………………21

    Приложение…………………………………………………………………………22

    Введение


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

    Для поиска по Всемирной паутине используют, специально сделанные для этого, поисковики (вроде Google). Каждому сайту необходим свой поисковик, который помогает найти, нужную для пользователя, информацию.

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

    Для достижения поставленной цели были определены следующие задачи:

    1. изучение тематического материала;

    2. анализ методов извлечения информации со сторонних web сайтов;

    3. разработка проекта и тестирование его работы.


    1. Техническое задание




      1. Введение

    В общем смысле, парсинг – это линейное сопоставление последовательности слов с правилами языка. Парсинг сайтов – последовательный синтаксический анализ информации, размещённой на интернет-страницах. Текст интернет-страниц представляет собой иерархичный набор данных, структурированный с помощью человеческих и компьютерных языков. На человеческом языке предоставлена информация, знания, ради которых, собственно, люди и пользуются Интернетом. Компьютерные языки (html, JavaScript, css) определяют как информация выглядит на мониторе.

    Парсинг сайтов является эффективным решением для автоматизации сбора и изменения информации.

    По сравнению с человеком, компьютерная программа-парсер:

    • быстро обойдёт тысячи веб-страниц;

    • аккуратно отделит техническую информацию от «человеческой»;

    • безошибочно отберёт нужное и отбросит лишнее;

    • эффективно упакует конечные данные в необходимом виде.

    В качестве сайта, для которого будет написан парсер, я взял сайт Государственных закупок Республики Казахстан - https://v3bl.goszakup.gov.kz/ru/searchanno
    1.2. Основания для разработки
    Работа ведётся на основании задания на курсовое проектирование по дисциплине «Программирование на языке Java».

    Задание утверждено и выдано преподавателем кафедры Жумахановой А.С.

    Наименование темы разработки – HTML парсер.
    1.3. Назначение разработки
    Данная разработка является семестровой работой по дисциплине «Программирование на языке Java».

    Критерии эффективности и качества программы

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

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

    Цель разработки программы - создание программного продукта, необходимого для вывода информации о последнем опубликованном тендере на сайте гос. закупок РК.
    1.4. Требования к программе или программному изделию


    1. Программа должна выводить название ресурса-источника

    2. Программа должна выводить номер объявления

    3. Программа должна выводить наименование объявления

    4. Программа должна выводить статус объявления

    5. Программа должна выводить дату публикации объявления

    6. Программа должна выводить срок начала приема заявок

    7. Программа должна выводить срок окончания приема заявок

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

    9. Программа должна выводить тип закупки

    10. Программа должна выводить вид предмета закупок

    11. Программа должна выводить организатора

    12. Программа должна выводить юридический адрес организатора

    13. Программа должна выводить количество лотов в объявлении

    14. Программа должна выводить сумму закупки

    15. Программа должна выводить признаки


    2. Описание разработки
    2.1. Структурное описание разработки


    Описание классов: спецификации данных, методов.

    IO API — (Input & Output) в первую очередь это Java API, которые облегчают работу с потоками.

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

    В Java библиотека IO API находится в пакете java.io и для того чтобы начать использовать IO достаточно импортировать данную библиотеку в ваш класс.

    В java.io существуют так называемые потоки ввода и вывода (InputStream and OutputStream).

    В основном java.io предназначен для чтения и записи данных в ресурс:

    1) файл;

    2) при работе с сетевым подключением;

    3) System.err, System.in, System.out;

    4) при работе с буфером.

    В Java IO много классов которые в основном работают с потоками чтения и записи, и решают различные задачи:

    получения доступа к файлам;

    получение сетевого соединения;

    работа с буфером;

    доступ к внутринему буферу памяти;

    межпоточнное общение;

    парсинг данных;

    чтение и запись текста;

    чтение и запись примитивных данных (long, int, float …);

    чтение и запись объектов.

    Все эти возможности вам предоставит Java IO.
    Java-библиотека jsoup предназначена для разбора HTML-страниц (парсинг), позволяя извлечь необходимые данные, используя DOM, CSS и методы в стиле jQuery. Библиотека поддерживает спецификации HTML5 и позволяет парсить страницы, как это делают современные браузеры. Библиотеке можно подсунуть для анализа URL, файл или строку.
    2.2. Функциональное описание разработки


    1. Создаем класс Parser. На рисунке 1 показано, как создавать новый класс в среде разработки Eclipse:



    Рисунок 1 – Создание Java класса в среде разработки Eclipse


    1. На рисунке 2 в окне записываем имя класса и ставим галочку на пункте public static void main (String[] args), для того, чтобы создать метод main.



    Рисунок 2 – Ввод имени Java класса и создание метода main


    1. Вводим переменные number, name, status, date, start, deadline, method_of_procurement, type, view, organizer, legal_address, number_of_lots, sum и signs. Все указанные переменные имеют тип String (строковый).

    2. Для подключения к веб-странице с протоколом HTTPS необходимо было скачать два сертификата с сайта Национального удостоверяющего центра РК - http://root.gov.kz/root_cer/pki_rsa.crt и http://root.gov.kz/root_cer/pki_gost.crt . Затем их необходимо было занести в базу сертификатов jdk. У меня она находилась по следующему пути: C:\Program Files\Java\jdk1.8.0_121\jre\lib\security\cacerts . Сделать это можно через командную строку (заранее загрузив сертификат в папку “security”), как это показано на рисунке 3 (запускаем от имени администратора):



    Рисунок 3 – Добавление сертификата в хранилище cacerts через командную строку
    Пароль, который необходимо ввести, стандартный: changeit

    1. Указываем путь к хранилищу сертификатов, который был написан выше и прописываем пароль.

    2. После установки JSOUP библиотеки нужно получить документ для разбора текста. Первая страница, которую мы будем разбирать: https://v3bl.goszakup.gov.kz/ru/searchanno для того, чтобы получить адрес URL последнего опубликованного тендера.

    3. Получив документ в своё распоряжение извлекаем требуемую информацию. В моем случае это была первая запись в первом столбце таблицы, класс которой назывался table.table-bordered. Метод select() позволил получить нужные теги: tr и td. Затем было удалено лишнее окончание «-1», которое говорит о том, что это новое объявление (ранее оно не публиковалось). На рисунке 4 показана страница с вышеуказанной таблицей:


    Рисунок 4 – Портал государственных закупок Республики Казахстан


    1. Как только мы нашли номер последнего объявления, то мы можем использовать его, чтобы пропарсить страницу именно этого тендера. Сама ссылка выглядит https://v3bl.goszakup.gov.kz/ru/announce/index/ + «номер объявления».

    2. Делаем так же как в шаге №7, то есть ищем по тегам информацию, которую должна выводить программа (см. 1.4). Каждый элемент заносим в переменную, название которой соответствует этому элементу.

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


    3. Описание пользовательского интерфейса
    Для разработки данного приложения я использовал среду разработки Eclipse Mars

    Установка не требуется, ничего не записывается в системный реестр, просто распакуйте скачанный архив, поместите папку "eclipse" в отведённое для IDE место, например, "C:\eclipse" или "C:\Program Files\eclipse".


    https://hightech.in.ua/sites/default/files/imagecache/screens/install-eclipse-sdk-1.jpg



    Внутри этой папки находится файл "eclipse.exe" и папки "plugins", "features" и "configuration".

    Для быстрого запуска рекомендуется создать ярлык на файл "eclipse.exe" и поместить этот ярлык на рабочий стол.

    Запуск Eclipse IDE

    Первым делом при запуске будет предложено выбрать workspace.


    https://hightech.in.ua/sites/default/files/imagecache/screens/start-eclipse-sdk-1.jpg



    Workspace - это рабочая область, папка на компьютере, в которой будут храниться все настройки Eclipse. Рекомендуется разместить в папке, отличной от директории с установленной IDE.

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


    https://hightech.in.ua/sites/default/files/imagecache/screens/start-eclipse-sdk-3.jpg



    Чтобы перейти к интерфейсу, кликнем по ссылке "Workbench" в правом верхнем углу.

    Особенности интерфейса Eclipse IDE


    https://hightech.in.ua/sites/default/files/imagecache/screens/eclipse-sdk-workbench-1.jpg



    Workbench - рабочее место программиста, основное окно программы, состоит из меню, представлений, редакторов и проекций.


    https://hightech.in.ua/sites/default/files/imagecache/screens/eclipse-sdk-workbench-2.jpg



    1. Главное меню.

    2. Панель инструментов.

    3. Editors - редакторы или панели для редактирования файлов с автодополнением и подсветкой синтаксиса, могут быть просто текстовые или, например, для файлов Java.

    4. Views - просмотры или представления - панели для просмотра некоторой структурированной информации о чём-либо, например список ваших проектов, файловая структура проекта или структура исходного файла, класса и т.д. Некоторые views могут иметь свои собственные панели инструментов.

    5. Панель выбора активной проекции. Perspectives - проекции, это набор представлений, панелей инструментов и редакторов, а также их расположение на рабочем месте (в главном окне IDE).

    Всякий раз, когда вы открываете проекцию, открываются настроенные для неё инструменты, редакторы и представления.

    Оптимизируя процесс разработки, программист упорядочивает и настраивает элементы интерфейса, затем сохраняет их в виде проекций.

    Eclipse предоставляет несколько готовых проекций для вас, например, Resource - интерфейс оптимизирован для управления файлами и проектами, или активная по умолчанию Java проекция - интерфейс оптимизирован для Java программирования.


    https://hightech.in.ua/sites/default/files/imagecache/screens/change-perspectives-window-1.jpg

    Можно просмотреть существующие проекции, нажав кнопку выбора проекций 
    https://hightech.in.ua/sites/default/files/change-perspectives-button-1.jpg и выбрать пункт "Other...".

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

    Хорошим ресурсом для изучения Eclipse будет справочная система. В комплекте с Eclipse SDK идёт мануал по программированию на Java и разработке плагинов. Открыть справку можно через главное меню "Help" -> "Help Contents".


    https://hightech.in.ua/sites/default/files/imagecache/screens/eclipse-sdk-help-contents-1.jpg



    Удобная навигация и поиск облегчит вам использование справки и ускорит процесс освоения вашей новой IDE.
    4. Тестирование программы
    Вначале открываем среду разработки Eclipse (напр На рисунке 1 мы имеем

    5. Руководство пользователя

    6. Руководство программиста
    Установка программы, необходимые программные и аппаратные средства

    Заключение
    Ответ к Введению+недостаток и достоинства+перспектива

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

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

    2. наиболее известными методами использования сторонней информации являются: полное извлечение web страницы, обработка специализированных сторонних текстовых файлов (например: XML файл валютных котировок).

    Для реализации процесса работы с внешними web страницами язык программирования PHP позволяет использовать функцию get_file_contents() или внешнее расширение CURL.

    В демонстрационном проекте были реализованы:

    1. полная загрузка web страницы;

    2. загрузка и обработка XML файла валютных котировок;

    3. создание собственного RSS канала.

    Результаты курсовой работы могут быть использованы молодыми web разработчиками в процессе углубленного изучения возможностей языка программирования PHP по работе с удаленными информационными ресурсами.


    Список литературы
    1. Картузов А.В. Программирование на языке JAVA. 2011г

    2. Монахов, В.В. Язык программирования Java и среда NetBeans : [учеб. пособие] / В.В. Монахов. - 3-еизд., перераб. и доп. - СПб. : БХВ-Петербург, 2012. - 703 с.

    3. Семочкин, А.Н. Язык программирования Java : учеб.пособие для вузов / А.Н. Семочкин ; М-во образования и науки РФ, Федеральное агентство по образованию [и др.]. - 2-е изд., перераб. И доп. - Благовещенск : Изд-во БГПУ, 2011. - 89 с.

    4. Интернет-источник: JAVA-приложение. www.helloworld.ru/texts/comp/lang/java/java5/index.html

    5. Учебно-методический практикум по дисциплине "Информационные технологии в экономике" / ГАЙДУК Н.В. ; Куб. гос. аграр. ун-т, Каф. информационных систем. - Краснодар : КубГАУ, 2008. - 299с


    Приложение


    import java.io.IOException;

    import java.util.Scanner;
    import org.jsoup.Jsoup;

    import org.jsoup.nodes.Document;

    import org.jsoup.nodes.Element;
    public class Parser {
    public static void main(String[] args) throws IOException {

    System.out.println("Введите номер тендера от 0 до 9 ");

    Scanner sc = new Scanner(System.in);

    int index = sc.nextInt();

    int in = index;

    String[] mas = {"https://v3bl.goszakup.gov.kz/ru/announce/index/1705945",

    "https://v3bl.goszakup.gov.kz/ru/announce/index/1705944", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705943", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705939", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705934", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705932", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705929", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705927", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705919", "https://v3bl.goszakup.gov.kz/ru/announce/index/1705914"

    };

    String url = mas[in];
    String number;

    String name;

    String status;

    String date;

    String start;

    String deadline;

    String method_of_procurement;

    String type;

    String method_failed_purchases;

    String view;

    String organizer;

    String legal_address;

    String number_of_lots;

    String sum;

    String signs;

    String supplier;

    String representative;

    String post;

    String mail;

    String bank;

    String author;
    System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.8.0_121\\jre\\lib\\security\\cacerts");

    System.setProperty("javax.net.ssl.trustStorePassword","changeit");

    Document htmldoc = Jsoup.connect(url).get();

    System.out.println(htmldoc.title());
    Element s11 = htmldoc.select("div.col-sm-7").get(0);

    Element s12 = s11.select("input").first();

    number = s12.attr("value");

    Element s21 = htmldoc.select("div.col-sm-7").get(1);

    Element s22 = s21.select("input").first();

    name = s22.attr("value");

    Element s31 = htmldoc.select("div.col-sm-7").get(2);

    Element s32 = s31.select("input").first();

    status = s32.attr("value");

    Element s41 = htmldoc.select("div.col-sm-7").get(3);

    Element s42 = s41.select("input").first();

    date = s42.attr("value");

    Element s51 = htmldoc.select("div.col-sm-7").get(4);

    Element s52 = s51.select("input").first();

    start = s52.attr("value");

    Element s61 = htmldoc.select("div.col-sm-7").get(5);

    Element s62 = s61.select("input").first();

    deadline = s62.attr("value");

    Element table1 = htmldoc.select("table.table.table-bordered.table-hover.table-striped").first();

    Element row1 = table1.select("tr").get(0);

    Element t1 = row1.select("td").first();

    method_of_procurement = t1.html();

    Element row2 = table1.select("tr").get(1);

    Element t2 = row2.select("td").first();

    type = t2.html();

    Element row3 = table1.select("tr").get(2);

    Element t3 = row3.select("td").first();

    method_failed_purchases = t3.html();

    Element row4 = table1.select("tr").get(3);

    Element t4 = row4.select("td").first();

    view = t4.html();

    Element row5 = table1.select("tr").get(4);

    Element t5 = row5.select("td").first();

    organizer = t5.html();

    Element row6 = table1.select("tr").get(5);

    Element t6 = row6.select("td").first();

    legal_address = t6.html();

    Element row7 = table1.select("tr").get(6);

    Element t7 = row7.select("td").first();

    number_of_lots = t7.html();

    Element row8 = table1.select("tr").get(7);

    Element t8 = row8.select("td").first();

    sum = t8.html();

    Element row9 = table1.select("tr").get(8);

    Element t9 = row9.select("td").first();

    String text =t9.html();

    text = text.replaceAll("
    ", " ");

    signs = text;

    Element row10 = table1.select("tr").get(9);

    Element t10 = row10.select("td").first();

    supplier = t10.html();

    Element table2 = htmldoc.select("table.table.table-bordered.table-hover.table-striped").get(1);

    Element row11 = table2.select("tr").get(0);

    Element t11 = row11.select("td").first();

    representative = t11.html();

    Element row12 = table2.select("tr").get(1);

    Element t12 = row12.select("td").first();

    post = t12.html();

    Element row13 = table2.select("tr").get(2);

    Element t13 = row13.select("td").first();

    mail = t13.html();

    Element row14 = table2.select("tr").get(3);

    Element t14 = row14.select("td").first();

    bank = t14.html();

    Element row15 = table2.select("tr").get(4);

    Element t15 = row15.select("td").first();

    author = t15.html();

    System.out.println("Номер объявления: "+number);

    System.out.println("Наименование объявления: "+name);

    System.out.println("Статус объявления: "+status);

    System.out.println("Дата публикации объявления: "+date);

    System.out.println("Срок начала приема заявок: "+start);

    System.out.println("Срок окончания приема заявок: "+deadline);

    System.out.println("Способ проведения закупки: "+method_of_procurement);

    System.out.println("Тип закупки: "+type);

    System.out.println("Способ несостоявшейся закупки: "+method_failed_purchases);

    System.out.println("Вид предмета закупок: "+view);

    System.out.println("Организатор: "+organizer);

    System.out.println("Юр. адрес организатора: "+legal_address);

    System.out.println("Кол-во лотов в объявлении: "+number_of_lots);

    System.out.println("Сумма закупки: "+sum);

    System.out.println("Признаки: "+signs);

    System.out.println("Приглашенный поставщик: "+supplier);

    System.out.println("ФИО представителя: "+representative);

    System.out.println("Должность: "+post);

    System.out.println("E-Mail: "+mail);

    System.out.println("Банковские реквизиты: "+bank);

    System.out.println("Создатель объявления: "+author);

    }
    }


    написать администратору сайта