Тип работы:
Предмет:
Язык работы:


ПАРСИНГ ОРГАНИЗАЦИИ, ИХ ПРОФИЛЕЙ И КОНТАКТОВ С ОНЛАЙН ВЕРСИИ 2ГИС

Работа №34600

Тип работы

Дипломные работы, ВКР

Предмет

информатика

Объем работы81
Год сдачи2019
Стоимость4900 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
465
Не подходит работа?

Узнай цену на написание


Введение 3
1. ПОНЯТИЕ СИНТАКСИЧЕСКОГО АНАЛИЗА ДАННЫХ 9
1.1. Парсеры 9
1.2. Пример простого парсинга 11
1.3. Формат JSON 15
1.4. Примеры JSON файлов 16
2. РАЗРАБОТКА ИНСТРУМЕНТАРИЯ ВЕКТОРНОЙ МАТЕМАТИКИ 23
2.1. Решение задачи упаковки сферического квадрата сферическими квадратами
меньшей площади 30
2.2. Решение задачи упаковки круга на сфере сферическими квадратами 34
3. СОЗДАНИЕ ПРИЛОЖЕНИЯ 43
3.1. API 2ГИС 43
3.2. Основные рабочие функции программы 48
3.3. Экспорт данных 58
3.4. Терминал для общения с пользователем 60
Заключение 66
Список использованных источников 69

Мировая сеть интернет состоит из связанной информации, которая представляется пользователям через веб-сайты. Она значительно изменила способы, с помощью которых мы обмениваемся, собираем и публикуем информацию. Количество представленной информации растет очень быстро.
Вместе с тем, как быстро растет количество информации в размерах, вариации и важности, лидеры бизнеса должны обратить внимание на то, какая информация важна больше всего. Не вся информация одинакова значима для бизнесменов и потребителей. Предприятиями, процветающими во время этого взрыва количества информации, будут те, которые могут выявлять и использовать критически важные подмножества данных, способные оказывать положительное влияние на пользовательский опыт и решать сложные проблемы.
Также, с использованием интернета, как нового канала для маркетинга и продаж, количество контента сильно увеличилось. Интернет-магазины предлагают большие пакеты данных для описания своих продуктов, а владельцы баз знаний предлагают доступ к своим базам данных.
IDC (International Data Corporation) предсказывает, что к 2025 году количество информации в мировой сети интернет вырастет до 175 зетабайт (примерно триллион гигабайт). Это в 10 раз больше, чем цифра в 33 зетабайт, актуальная на 2018 год[2]. Все эти данные дадут возможность для уникально нового пользовательского опыта и путей развития бизнеса.
При таком неорганизованном росте больше невозможно вручную отслеживать все источники данных. Этот тот момент, когда автоматических сбор данных эволюционировал. Автоматизированные методы позволяют собирать огромное количество данных из Интернета по сравнению с ручным извлечением данных.
Темой данного диплома является парсинг данных с геоинформационного
сервиса 2ГИС. Мы будем решать актуальную на сегодня задачу сбора данных.
Сбор данных — это процесс собирания информации и измерения целевых показателей в сложившейся системе, который позволит потом ответить на актуальные вопросы и оценить результаты. Сбор данных является частью исследований во всех областях изучения, включая физику, общественные науки, гуманитарные науки и бизнес. Хотя методы различны для разных дисциплин, упор на обеспечение точной и правдивой информации остаётся тем же самым. Целью всего сбора данных служит получение свидетельства о качестве данных, что позволяет при анализе дать убедительные и надёжные ответы на поставленные вопросы[4].
Как известно, сервис 2ГИС является примером хорошего сервиса по обеспечению пользователей пространственными данными и их атрибутами. И если пользователю нужно что — то узнать, он скорее всего получит нужную информацию и сделать это будет довольно просто. Это говорит о практической полноте базы данных данного сервиса.
2ГИС обладает уникальной базой данных по организациям. В ней представлены практически все контакты организации; ее филиалы; профиль, на который ориентируется организация; расположение входа в здание организации; виды кухни (для организаций, связанных с общепитом); и многое другое. Данная база ведется со времен основания сервиса в 1999 году. Ее пользователями на текущий момент являются 40 000 000 пользователей в более чем 280 городах мира. Она 4 раза в год обновляется на самые актуальные данные, которые собираются их сотрудниками call-центров, а также людьми, занимающимися разъездом по городу[5].
Есть множество ситуаций, в которых людям пригодились бы эти данные (и сервис это прекрасно понимает, поэтому на нем, как и на любом другом крупном интернет — ресурсе, действует некая защита). Самое очевидное, что приходит на ум - задействовать их для спам-рассылок или для обзвона клиентов. Или, например, автоматизировать поиск конкурентов. Вообще,
большей частью подобные данные могли бы помочь в целях маркетинга.
Допустим кто — то открыл магазин спортивных товаров. Он закупил спортивное оборудование, но не знает, по какой цене продавать. Этот человек мог бы воспользоваться нашим парсером и найти спортивные магазины в непосредственной близости от своего, после чего скорректировать цены собственного магазина, учитывая цены других магазинов.
К сожалению, если нам понадобилось собирать данные с сервиса в «промышленных масштабах», 2ГИС не даст нам так просто этого сделать. Да, он предоставляет возможность произвести выборку по своей базе данных. Но это стоит относительно больших денег и каждая такая выборка оплачивается отдельно. (Примечание: Может показаться, что все это является незаконным, но это не так, ибо мы ничего не взламываем, а пользуемся открытыми данными).
Да, мы могли бы нанять целый штаб людей, которые бы целый день сидели за компьютером на сайте сервиса и переводили информацию из него в удобную для обработки форму (например, в электронные таблицы). Но это неэффективно и проще заказать выборку.
К счастью, существуют способы автоматизировать данный процесс, не нарушая закон и не прибегая к платным услугам сервиса. Одним из них является парсинг данных (или по — другому, лексический анализ).
Программы, производящие парсинг данных, называются парсеры. Для сервиса 2ГИС в сети можно найти множество неофициальных парсеров, которые за небольшую сумму готовы предоставить самые актуальные данные из базы 2ГИС на заданной территории. Но все же порядочность подобных парсеров должна всегда подвергаться сомнению, так как очень просто написать программу, имитирующую реальный парсинг. Например, существует множество генераторов телефонных номеров или адресов e-mail. В конце концов, злоумышленники могут просто отдавать вам старые, неактуальные данные.
Поэтому гораздо лучше написать свой парсер, чем мы и займемся в
рамках данной ВКР.
Наш парсер мы оформим в виде программы на языке псевдокода (то есть компактного, неформального языка описания алгоритмов, в котором опущены несущественные детали и специфический синтаксис, не имеющие отношения к решаемой проблеме[6]). Она будет работать в режиме терминала. В начале она инициализируется и проверяет наличие необходимых для ее работы ресурсов. Если их нет - она их загрузит по сети (и при первом запуске она так и поступит, поэтому первый запуск будет долгим). После чего она переходит в режим ожидания запросов от пользователя, которому понадобились данные сервиса и исполняет их.
Преимущество использования псевдокода для решения нашей проблемы в том, что ее с легкостью можно адаптировать под любой существующий язык программирования. А так же в том, что программы, описанные таким образом, намного легче понять человеку, даже не совсем знакомому с программированием.
Так же, если ознакомиться с неофициальными парсерами поближе, можно заметить, что они всегда предоставляют парсинг по целому городу (то есть геометрической фигурой, в которой производится сбор данных, являются очертания города). Мы же усложним задачу и будем производить парсинг в сферическом квадрате и в круге, лежащем на сфере. Это в некоторых случаях бывает полезнее, чем просто данные по целому городу. Например, если у нас есть магазин и мы ищем конкурентов - нам нет дела до конкурентов, находящихся на другом конце города, в отличие от тех, кто находится от нас в радиусе X метров. Чтобы все это реализовать, нам придется использовать довольно запутанный математический аппарат для работы с векторами.
В целом можно сказать, что подобная программа очень сильно пригодилась бы людям, жизнь которых связана со сферой услуг, маркетингом и предпринимательством.
Поговорим немного подробнее о сервисе 2ГИС.
«2ГИС» (произносится «двагис»; до ребрендинга в 2011 году — «ДубльГИС») — международная картографическая компания, выпускающая одноимённые электронные справочники с картами городов с 1999 года[5].
Главный офис «2ГИС» находится в Новосибирске. Компания имеет справочники для многих городов России, а также нескольких городов за рубежом — в Казахстане, Италии, Чехии, Чили, ОАЭ, Киргизии, на Украине и Кипре[5].
Сервис ежедневно обрабатывает более 2,2 млн поисковых запросов[5].
Все версии 2ГИС, как и обновления к ним, бесплатны для пользователей. Основной источник доходов компании «2ГИС» — продажа рекламных мест на карте и в справочнике (баннер, место в списке, дополнительный текст)[7].
Входит в десятку крупнейших интернет-компаний России по версии Forbes. В 2018 году журнал оценил стоимость компании в $ 211 млн.[8] В 2019 году компания «2ГИС» заняла восьмую позицию в рейтинге «20 самых дорогих компаний Рунета — 2019», опубликованном журналом Forbes. По оценкам экспертов стоимость компании в 2019 году составила 243 миллиона долларов.
«ДубльГИС» родилась как сторонний проект компании из Новосибирска под названием «Техноград плюс». В то время она занималась разработкой ГИС в основном для новосибирской городской телефонной сети, а также для других организаций. Их продукцию с картами Новосибирска в то время на рынке продавала родительская компания. Уже тогда «ДубльГИС» выпустила свой первый городской справочник в виде CD-диска, прилагавшегося к газете «Стройка», в котором была собрана информация о строительных фирмах и организациях Новосибирска[5].
В 1998 году многие заказчика компании «Техноград плюс» претерпели финансовые трудности и оказались не в состоянии оплачивать дорогостоящие разработки профессиональных ГИС. В связи с этим «ДубльГИС» начала думать о поиске новых клиентов и новых рынках сбыта собственной продукции. Более того, городские справочники, на которых держался доход компании, разошлись
пиратскими тиражами и продавать их стало бессмысленно[5].
Компания приняла решение на распространение бесплатного программного обеспечения, доход которой приходился бы на рекламу. Опыт с газетой «Стройка» показал, что людям интересна концепция объединенной карты и городского справочника. Именно так и появилось название «ДубльГИС», то есть «Геоинформационная система» и «Городской информационный справочник»[5].
В дальнейшем компания активно развивалась. Выпустила свою продукцию в онлайн, а также на большую часть мобильных операционных систем. Также с 2012 года компания начала осваивать зарубежный рынок ГИС, разработав ГИС для итальянских городов Венеции и Падуи[5].
На сегодняшний день можно с уверенностью сказать, что «ДубльГИС» (а с 2011-ого года - «2ГИС») создала один из наиболее полных городских справочников, в котором собрано огромное количество информации по организациям различного профиля. Сама «2ГИС» заявляет, что придерживается 95% точности данных, которая обеспечивается непрерывной работой ее сотрудников по актуализации данных[5]. Полнота отражается даже в таких мелочах, как показ стороны, с которой нужно войти в здание, дабы попасть в ту или иную организацию[38]. Или, например, компанией собраны и организованы такие специфичные и сложные данные, как устройство некоторых торговых центров изнутри, в том числе казанское «Кольцо»[39].
Также можно отметить, что «2ГИС» в настоящее время активно переводит свой формат данных в трехмерное пространство[40]. Например, оцифрованы с хорошей точностью такие казанские достопримечательности как мечеть Кул- Шариф или Петропавловский собор. Для этого используются методы дистанционного зондирования земли, с последующей обработкой профессиональными дизайнерами полученных данных в программах для 3D моделирования.


Возникли сложности?

Нужна помощь преподавателя?

Помощь студентам в написании работ!


На этом можно считать задачу, поставленную в рамках данной работы, решенной. Мы подробно описали на языке псевдокода каждую функцию, необходимую для сбора профилей организаций в специфических областях с онлайн сервиса 2ГИС. А именно, мы реализовали следующие задачи:
— Параметризовали необходимые нам географические области (сферический квадрат и круг, лежащий на сфере). Это позволило нам перейти от определения этих областей к проведению операций над этими областями. Мы научились разбивать сферический квадрат на меньшие квадраты, и, используя это, научились приближать с хорошей точностью круг на сфере сферическими квадратами. Это позволило нам вписаться в ограничения API 2ГИС, касающиеся области сбора данных;
— Научились пользоваться API 2ГИС, не удовлетворяя при этом условиям пользования API. При этом закон мы не нарушили, ибо пользовались предоставленными самим сервисом данными, ничего не взламывая. Однако человек, пользующийся нашей программой, нарушить закон все же может, если непорядочно распорядится полученными от нее данными.
— Провели связь между программой и пользователем посредством эмулятора терминала, поверхностно познакомились с таким мощным инструментом, как регулярные выражения и научились проверять на валидность запросы пользователя, точно так же, как это происходит на API серверах 2ГИС.
Таким образом, если кому-либо понадобится реализовать эту программу на конкретном языке программирования - он с легкостью это сделает.
Автор этой работы реализовал данную программу на языке программирования Java. Для синтаксического анализа JSON файлов была использована библиотека Gson, созданная сотрудниками Google. На следующем рисунке приведен скриншот работы этой программы.
А приведенный далее скриншот показывает результат работы этой программы: собранные профили организаций в городе Казань. Областью сбора является круг, центр которого лежит центре города, с радиусом 2000 метров.



1. RFC4627, The application/json Media Type for JavaScript Object Notation (JSON), July 2006
Научные статьи
2. David Reinsel, John Gantz, John Rydni. The Digitization of the World // IDC White Paper, November 2018, p. 4
3. Mr Harish Chandra Rajpoot. Mathematical Analysis of Spherical Rectangle (Spherical Geometry by HCR), M.M.M. University of Technology, Gorakhpur-273010 (UP), India, 2015, p. 1
Электронные источники
4. Сбор данных // Википедия. [2018—2018]. Дата обновления:
13.12.2018. Режим доступа: https://ru.wikipedia.org/?oldid=96833428 (дата
обращения: 13.12.2018).
5. 2ГИС // Википедия. [2007—2019]. Дата обновления: 24.05.2019. Режим доступа: https://ru.wikipedia.org/?oldid=100003771 (дата обращения:
24.05.2019) .
6. Псевдокод (язык описания алгоритмов) // Википедия. [2007—2015].
Дата обновления: 27.12.2015. Режим доступа: https://ru.wikipedia.org/?
oldid=75363163 (дата обращения: 27.12.2015).
7. Юлиана Петрова. Карты, деньги, «ДубльГИС» // «Коммерсантъ
Секрет Фирмы». — 03.08.2011. — № 8 (312). Режим доступа:
https://www.kommersant.ru/doc/1688663
8. 20 самых дорогих компаний Рунета — 2018. Рейтинг Forbes | Технологии | Forbes.ru (англ.). www.forbes.ru. Дата обращения 16 июля 2018. Режим доступа: https://www.forbes.ru/tehnologii-photogallery/357559-20-samyh- dorogih-kompaniy-runeta-2018-reyting-forbes?photo=9
9. Синтаксический анализ // Википедия. [2006—2018]. Дата обновления:
04.09.2018. Режим доступа: https://ru.wikipedia.org/?oldid=94899958 (дата обращения: 04.09.2018).
10. Синтаксический анализатор // Википедия. [2006—2019]. Дата обновления: 16.01.2019. Режим доступа: https://ru.wikipedia.org/?oldid=97510454 (дата обращения: 16.01.2019).
11. Lexical analysis // Википедия. [2002-2019]. Дата обновления:
01.06.2019. Режим доступа: https://en.wikipedia.org/wiki/?oldid=899822734
12. Template processor // Википедия. [2006-2019]. Дата обновления:
14.05.2019. Режим доступа: https://en.wikipedia.org/wiki/?oldid=897046586
13. Parsing // Википедия. [2003-2019]. Дата обновления: 15.05.2019. Режим доступа: https://en.wikipedia.org/?oldid=897166408
14. Python (programming language) // Википедия. [2001-2019]. Дата
обновления: 11.06.2019. Режим доступа: https://en.wikipedia.org/w/index.php? oldid=901341804
15. Алгоритм сортировочной станции // Википедия. [2010—2018]. Дата обновления: 21.05.2018. Режим доступа: https://ru.wikipedia.org/?oldid=92796408 (дата обращения: 21.05.2018).
16. JSON // Википедия. [2006—2019]. Дата обновления: 12.04.2019.
Режим доступа: https://ru.wikipedia.org/?oldid=99165982 (дата обращения:
12.04.2019) .
17. A Modern Reintroduction To AJAX. // Режим доступа: wwwjavascript- coder.com/tutorials/re-introduction-to-ajax.phtml (дата обращения 12 Апреля 2017)
18. Douglas Crockford — The JSON Saga. YouTube. 28 Августа 2011. YouTube // Режим доступа: https://www.youtube.com/watch?v=-C-JoyNuQJs
19. Gson // Википедия. [2011-2018]. Дата обновления: 24.12.2018. Режим доступа: https://en.wikipedia.org/wiki/?oldid=875140006
20. Circle of a sphere // Википедия. [2003-2019]. Дата обновления:
18.04.2019. Режим доступа: https://en.wikipedia.org/?oldid=893045643
21. 2ГИС API Документация [Электронный ресурс] // Режим доступа: http://catalog.api.2gis.ru/doc/2.0/
22. Orde Saunders. How long does an HTTP request take? [Электронный ресурс]. // Режим доступа: https://decadecity.net/blog/2012/09/15/how-long-does- an-http-request-take
23. Блог компании 2ГИС. Как мы делаем карту для тех, кто делает карту.
[Электронный источник]. // Режим доступа:
https://habr.com/ru/company/2gis/blog/341508/
24. WGS 84 // Википедия. [2007—2018]. Дата обновления: 20.04.2018. Режим доступа: https://ru.wikipedia.org/?oldid=92196407 (дата обращения:
20.04.2018) .
25. Ортодромия // Википедия. [2006—2017]. Дата обновления: 14.08.2017. Режим доступа: https://ru.wikipedia.org/?oldid=87070505 (дата обращения: 14.08.2017).
26. Discretize a circle on a sphere with a given center and radius.
[Электронный ресурс]. // Режим доступа:
https://math.stackexchange.com/questions/327699/discretize-a-circle-on-a-sphere- with-a-given-center-and-radius
27. Separation of content and presentation // Википедия. [2017-2019]. Дата
обновления: 18.01.2019. Режим доступа: https://en.wikipedia.org/?
oldid=878997659
28. Instagram API Документация [Электронный ресурс] // Режим доступа: https: //www.instagram .com/developer/endpoints/
29. Facebook API Документация. Пример пагинации. [Электронный
ресурс] // Режим доступа:
https://developers.facebook.com/docs/php/howto/example_pagination_basic/
30. Множество // Википедия. [2004—2019]. Дата обновления: 02.06.2019. Режим доступа: https://ru.wikipedia.org/?oldid=100181898 (дата обращения:
02.06.2019) .
31. Хеш-таблица // Википедия. [2005—2019]. Дата обновления:
16.05.2019. Режим доступа: https://ru.wikipedia.org/?oldid=99818432 (дата обращения: 16.05.2019).
32. Хеш-функция // Википедия. [2006—2019]. Дата обновления:
31.05.2019. Режим доступа: https://ru.wikipedia.org/?oldid=100140118 (дата
обращения: 31.05.2019).
33. Текстовый файл // Википедия. [2005—2018]. Дата обновления:
08.12.2018. Режим доступа: https://ru.wikipedia.org/?oldid=96723659 (дата
обращения: 08.12.2018).
34. Перевод строки // Википедия. [2008—2019]. Дата обновления:
27.05.2019. Режим доступа: https://ru.wikipedia.org/?oldid=100055050 (дата обращения: 27.05.2019).
35. Эмулятор терминала // Википедия. [2007—2017]. Дата обновления:
09.09.2017. Режим доступа: https://ru.wikipedia.org/?oldid=87526681 (дата
обращения: 09.09.2017).
36. Регулярные выражения // Википедия. [2004—2019]. Дата обновления:
06.06.2019. Режим доступа: https://ru.wikipedia.org/?oldid=100262897 (дата обращения: 06.06.2019).
37. Сотовые операторы России. [Электронный ресурс]. Режим доступа: http://indexmain.ru/mobile/ru
38. Новые карты 2ГИС покажут вход в здание. Tjournal. [Электронный ресурс]. // Режим доступа: https://tjournal.ru/flood/48730-2gis-entrance
39. 2GIS запустили расширение для браузера и карты этажей торговых центров. РОЕМ (14 мая 2014). [Электронный ресурс]. // Режим доступа: http://roem.ru/2014/05/14/twogis99261/
40. В 2ГИС появилась 3D-карта. Новости компании 2ГИС.[Электронный ресурс]. // Режим доступа: http://info.2gis.ru/ufa/company/news/v-2gis-poyavilas- 3d-karta

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




©2024 Cервис помощи студентам в выполнении работ