Курсовая работа_Ява. Разработка html парсера с помощью объектноориентированного языка программирования Java
Скачать 434.43 Kb.
|
МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РЕСПУБЛИКИ КАЗАХСТАН Казахский агротехнический университет им. С. Сейфуллина Кафедра «Информационные системы» КУРСОВАЯ РАБОТА На тему «Разработка 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. разработка проекта и тестирование его работы.
В общем смысле, парсинг – это линейное сопоставление последовательности слов с правилами языка. Парсинг сайтов – последовательный синтаксический анализ информации, размещённой на интернет-страницах. Текст интернет-страниц представляет собой иерархичный набор данных, структурированный с помощью человеческих и компьютерных языков. На человеческом языке предоставлена информация, знания, ради которых, собственно, люди и пользуются Интернетом. Компьютерные языки (html, JavaScript, css) определяют как информация выглядит на мониторе. Парсинг сайтов является эффективным решением для автоматизации сбора и изменения информации. По сравнению с человеком, компьютерная программа-парсер:
В качестве сайта, для которого будет написан парсер, я взял сайт Государственных закупок Республики Казахстан - https://v3bl.goszakup.gov.kz/ru/searchanno 1.2. Основания для разработки Работа ведётся на основании задания на курсовое проектирование по дисциплине «Программирование на языке Java». Задание утверждено и выдано преподавателем кафедры Жумахановой А.С. Наименование темы разработки – HTML парсер. 1.3. Назначение разработки Данная разработка является семестровой работой по дисциплине «Программирование на языке Java». Критерии эффективности и качества программы 1) Социальный фактор. Данная программная разработка очень проста в освоении и рассчитана не только на профессионалов, но и на рядовых пользователей, работающих под Windows. 2) Возможность доработки. Программист, пишущий на языке Java и который сможет перенести данные из переменных класса в базу данных для использования их без подключения к Интернету. Цель разработки программы - создание программного продукта, необходимого для вывода информации о последнем опубликованном тендере на сайте гос. закупок РК. 1.4. Требования к программе или программному изделию
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 – Создание Java класса в среде разработки Eclipse
Рисунок 2 – Ввод имени Java класса и создание метода main
Рисунок 3 – Добавление сертификата в хранилище cacerts через командную строку Пароль, который необходимо ввести, стандартный: changeit
Рисунок 4 – Портал государственных закупок Республики Казахстан
3. Описание пользовательского интерфейса Для разработки данного приложения я использовал среду разработки Eclipse Mars Установка не требуется, ничего не записывается в системный реестр, просто распакуйте скачанный архив, поместите папку "eclipse" в отведённое для IDE место, например, "C:\eclipse" или "C:\Program Files\eclipse". Внутри этой папки находится файл "eclipse.exe" и папки "plugins", "features" и "configuration". Для быстрого запуска рекомендуется создать ярлык на файл "eclipse.exe" и поместить этот ярлык на рабочий стол. Запуск Eclipse IDE Первым делом при запуске будет предложено выбрать workspace. Workspace - это рабочая область, папка на компьютере, в которой будут храниться все настройки Eclipse. Рекомендуется разместить в папке, отличной от директории с установленной IDE. При первом запуске будет открыто окно приветствия со ссылками на примеры, руководство и описание функциональности программы. Чтобы перейти к интерфейсу, кликнем по ссылке "Workbench" в правом верхнем углу. Особенности интерфейса Eclipse IDE Workbench - рабочее место программиста, основное окно программы, состоит из меню, представлений, редакторов и проекций.
Всякий раз, когда вы открываете проекцию, открываются настроенные для неё инструменты, редакторы и представления. Оптимизируя процесс разработки, программист упорядочивает и настраивает элементы интерфейса, затем сохраняет их в виде проекций. Eclipse предоставляет несколько готовых проекций для вас, например, Resource - интерфейс оптимизирован для управления файлами и проектами, или активная по умолчанию Java проекция - интерфейс оптимизирован для Java программирования. Можно просмотреть существующие проекции, нажав кнопку выбора проекций и выбрать пункт "Other...". Конечно, все проекции настроены на усмотрение разработчиков, вы можете настраивать их как захотите и создавать свои. Хорошим ресурсом для изучения Eclipse будет справочная система. В комплекте с Eclipse SDK идёт мануал по программированию на Java и разработке плагинов. Открыть справку можно через главное меню "Help" -> "Help Contents". Удобная навигация и поиск облегчит вам использование справки и ускорит процесс освоения вашей новой 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); } } |