Утилита Анцитрус-паук для скачивания справочников из web

MDM, НСИ, DQ  Утилита Категория:  MDM, НСИ, DQ
Опубликовал:         18.03.2012               print
О своей программе для скачивания корпоративных справочников из интернета рассказывает и делится профессиональный web-программист Вадим Веденин

При создании справочников для корпоративных порталов или приложений порой возникает проблема нахождения исходных данных для первоначального наполнения справочников. Это могут быть справочники населенных пунктов, телефонов, телефонных кодов, фамилий, адреса предприятий и т.п.. Часто такие данные можно найти в открытых источниках web. Однако, как правило, данные предоставляются в таком виде, что исключается их импорт в корпоративную базу данных или приложения. Обычно данные предоставляются в виде результата поиска на страницах интернет порталов. Представляемая в данной статье утилита "Анцитрус-паук" предназначена для загрузки интернет-страниц с данными, пригодных для создания справочников.


Рассмотрим задачу получения данных с сайта, когда необходимые сведения формируются как результат поиска на форме ввода web-страницы. Возьмем популярную задачу - составление справочника телефонных кодов городов России, для чего воспользуемся сайтом http://www.ru.all.biz/guide/phonecodes/. На данном ресурсе представлена форма поиска, позволяющая осуществить поиск телефонных кодов городов России, хранящихся в базе данных сайта. Форма имеет следующий вид:




В форме запрашиваюися следующие параметры поиска: город, телефонный код города, область, а результаты поиска отображаются постранично. Если скачать всю страницу целиком, то мы получим страницу, содержащую в себе много лишней информации (картинки, реклама, ссылки, ...). Более того, в силу особенностей интернет-приложений результат поиска разбивается на страницы: вторая страница вызывается по адресу http://www.ru.all.biz/guide/phonecodes/?page=2.


Результат запроса к базе данных представляется на 54 страницах! Параметром итерации выступает номер страницы (в данном случае параметр принимает значение от 1 до 54) в паре с ключом с именем page. Для того, чтобы пролистать все страницы с результатом поиска телефонных кодов городов России, необходимо последовательно выполнить вызов адресов:
http://www.ru.all.biz/guide/phonecodes/?page=1
http://www.ru.all.biz/guide/phonecodes/?page=2
http://www.ru.all.biz/guide/phonecodes/?page=3
.....
http://www.ru.all.biz/guide/phonecodes/?page=54


Для скачивания только нужных данных необходимо выявить в HTML-коде страницы тег, содержащий в себе списочные данные. Обычно для этого используется табличный тег table, но может быть использован любой тег. Для наиболее простого разбора HTML в браузере Internet Explorer 8.0 встроены инструменты для web-дизайнера, которые вызываются по нажатию клавиши F12. В браузере FireFox можно использовать плагин Firebug. В связи с тем, что Firebug работает более стабильно, чем инструменты web-дизайнера Internet Explorer 8.0, рекомендуется использовать именно Firebug. В браузере FireFox данный плагин вызывается также по нажатию клавиши F12.


Для нахождения тега-контейнера для данных с телефонными кодами городов выполним следующие действия:

  1. в FireFox откроем адрес http://www.ru.all.biz/guide/phonecodes/;
  2. по нажатию клавиши F12 запустим Firebug;
  3. в Firebug выберем закладку HTML;
  4. в панели инструментов щелкнем на кнопку стрелка;
  5. щелкнем на тексте "населенный пункт"



Видно, что текст "населенный пункт" размещен в теге:

который в свою очередь заключен в теге:


Теперь нужно решить, по какому атрибуту среди всех тегов можно будет найти требуемый тег-контейнер. У HTML-элементов уникальным значением обладает только атрибут id, но в нашем случае он отсутствует. Будем использовать атрибут cellSpacing со значением 2, так как в этой странице тег table с атрибутом cellSpacing со значением 2 присутствует только один раз.
В итоге задача загрузки телефонных кодов городов с вышеуказанной web-страницы можно сформулировать следующим образом:
Дано:

  1. Необходимо скачать справочник телефонных городов;
  2. Телефонные коды городов сгружать с адреса http://www.ru.all.biz/guide/phonecodes/?page=[номер страницы] ;
  3. Счетчиком для итерации является номер страницы, передаваемый параметру page ссылки страницы. Счетчик принимает значение от 1 до 54;
  4. Результирующие данные содержатся в теге-контейнере table с уникальным атрибутом cellSpacing=”2”

Необходимо:
  1. По указанному адресу скачать данные, используя счетчик итерации со значением от 1 до 54;
  2. В каждой полученной странице найти HTML-тег table с атрибутом cellSpacing=”2” и удалить все остальные теги.

Для скачивания страниц с данными о телефонных кодах гродов России форма параметров программы "Анцитрус-паук" должна быть заполнена следующим образом:



где:
- адрес для скачивания: http://www.ru.all.biz/guide/phonecodes/
- на закладке "цифровой итератор" в поля "начальное значение" и "конечное значение" счетчика выставлены соответственно: 1 и 54
- тег элемента в странице: table
- имя атрибута-ключа: cellSpacing
- значение атрибута-ключа: 2
- текстовое поле "список параметров адреса": page={iterator}
- категория: телефоны

После завершения процесса скачивания в папке программы окажутся файлы, содержащие в себе HTML таблицы с телефонными кодами городов следующего вида:


Данный HTML-фрагмент можно отформатировать HTML-конвертором и данные импортировать в базу данных.



Вариант №2 скачивания данных с web-ресурса

Рассмотрим другой вариант скачивания данных с web-страницы. Будем использовать адрес сайта Российских железных дорог http://cargo.rzd.ru/isvp/public/cargo/ref_station?STRUCTURE_ID=5101&page4821_2705=1 для скачивания списка железнодорожных станций России. На странице присутствует форма для ввода параметров поиска и первая страница с результатами запроса.


В данном случае итерируемым параметром будет параметр page4821_2705:
http://cargo.rzd.ru/isvp/public/cargo/ref_station?STRUCTURE_ID=5101&page4821_2705=1
http://cargo.rzd.ru/isvp/public/cargo/ref_station?STRUCTURE_ID=5101&page4821_2705=2
Параметры url данной страницы следующие: page4821_2705={iterator} - номер страницы в результате поиска, диапазон от 1 до 1024 STRUCTURE_ID=5101. Для определения тега-контейнера необходимо инструментом стрелка в Firebug щелкнуть на тексте "Код ЕСР".
Анализ показывает, что текст содержится в элементе


а тегом-контейнером для него является тег

Таким образом, для скачивания страницы необходимо оставить тег table с артибутом class="Striped".



Для скачивания страниц со списком железнодорожных станций РЖД форма параметров программы "Анцитрус-паук" должна быть заполнена следующим образом:
- адрес для скачивания: http://cargo.rzd.ru/isvp/public/cargo/ref_station
- на закладке "цифровой итератор" в поля "начальное значение" и "конечное значение" счетчика поставить: 1 и 1024
- тег элемента в странице: table
- имя атрибута-ключа: class
- значение атрибута-ключа: Striped
- список параметров адреса:
После завершения процесса скачивания в папке программы будут размещены файлы, содержащие списки железнодорожных станций следующего вида:




Вариант №3 скачивания данных с web-ресурса

Рассмотрим загрузку списка кафе г. Москвы с сайта http://mosday.ru/guide/objects.php?type=food_cafe&page=1. Анализ URL говорит о том, что итерируемым параметром в web-ссылке является параметр page, номер страницы с диапазоном значений от 1 до 45. Для скачивания страниц со списком кафе в г. Москва форма параметров программы "Анцитрус-паук" должна быть заполнена следующим образом:
- адрес для скачивания: http://mosday.ru/guide/objects.php
- на закладке "цифровой итератор" в поля "начальное значение" и "конечное значение" счетчика поставить: 1 и 45
- тег элемента в странице: font
- имя атрибута-ключа: style
- значение атрибута-ключа: font-size:16px
- кодировка страницы для url: windows-1251
- список параметров адреса: type=food_cafe и page={iterator}



После завершения процесса скачивания в папке программы будут размещены файлы, содержащие список кафе города Москвы в следующем виде:


В этих файлах HTML-код достаточно избыточен, поэтому перед импортом списка в базу данных HTML-код целесообразно преобразовать каким-нибудь HTML-конвертором.


Энергия идеи   dvbi.ru                    Последнее изменение: 2017-10-15 01:41:53Z         Возрастная аудитория: 14-70         Комментариев:  0
Прикрепленные файлы:
  Программа Анцитрус-паук               Размер: 46.65 Кб            Скачали раз: 253

Теги:  Справочники
Пожалуйста, проголосуйте и ниже поставьте лайк:   rating
0 0 0


  Comments


Следующая статья:    Шаблон бизнес-требований к извлекаемым из систем данных для DWH
Предыдущая статья:  SSAS - кастомизированная детализация на вычисляемых ячейках