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

Программа сбора данных для контроллера RFID

Благодаря программной RFID-компоненте Вы можете установить соединение с контроллером EMS Cobalt HF (продукт компании Datalogic ® Automation RFID) из своей программы. Информация с RFID-тегов может быть считана и обработана с помощью простых команд (Tag Memory Read/Write...).

Протокол взаимодействия для контролера Cobalt RFID полностью обрабатывается данной программой. Состояние текущей операции может быть запрошен в любое время. Такой запрос содержит детальную информацию о текущей ситуации.

Данный программный компонент для RFID предоставляет интерфейс программирования приложений Microsoft ® COM и Microsoft ActiveX ® . Таким образом, эти интерфейсы облегчают использование скриптовых языков, таких как VBS (Visual Basic Scripting) и VBA (Visual Basic для приложений, как Microsoft ® Office, Word, Excel ® Access™ и др.). Также, это дело всего нескольких минут для интеграции возможности подключения через RFID в приложения, написанные на Visual Basic, Visual C/C++ и других языках программирования.

  • Для EMS (Datalogic ® Automation RFID) Cobalt HF Series, EMS HF 0405-xx
  • RS-232/422 соединяемость через протокол ABx Fast
  • Чтение и запись всех RFID тегов, поддерживаемых контролером

Мы рассмотрели основные понятия и термины в рамках технологии Data Mining. Сегодня более детально остановимся на Web Mining и подходах к извлечению данных из веб-ресурсов.

Web Mining - это процесс извлечения данных из веб-ресурсов, который, как правило, имеет больше практическую составляющую нежели теоретическую. Основная цель Web Mining - это сбор данных (парсинг) с последующим сохранением в нужном формате. Фактически, задача сводится к написанию HTML парсеров, и как раз об этом поговорим более детально.

Есть несколько подходов к извлечению данных:

  1. Анализ DOM дерева, использование XPath.
  2. Парсинг строк.
  3. Использование регулярных выражений.
  4. XML парсинг.
  5. Визуальный подход.
Рассмотрим все подходы более детально.

Анализ DOM дерева

Этот подход основывается на анализе DOM дерева. Используя этот подход, данные можно получить напрямую по идентификатору, имени или других атрибутов элемента дерева (таким элементом может служить параграф, таблица, блок и т.д.). Кроме того, если элемент не обозначен каким-либо идентификатором, то к нему можно добраться по некоему уникальному пути, спускаясь вниз по DOM дереву, например:

Или пройтись по коллекции однотипных элементов, например:

Достоинства этого подхода:

  • можно получить данные любого типа и любого уровня сложности
  • зная расположение элемента, можно получить его значение, прописав путь к нему
Недостатки такого подхода:
  • различные HTML / JavaScript движки по-разному генерируют DOM дерево, поэтому нужно привязываться к конкретному движку
  • путь элемента может измениться, поэтому, как правило, такие парсеры рассчитаны на кратковременный период сбора данных
  • DOM-путь может быть сложный и не всегда однозначный
Этот подход можно использовать вместе с библиотекой Microsoft.mshtml, которая, по сути. является core элементом в Internet Explorer.
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm" );
foreach (HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href" ])
{
HtmlAttribute att = link["href" ];
att.Value = FixLink(att);
}
doc.Save("file.htm" );

Парсинг строк

Несмотря на то, что этот подход нельзя применять для написания серьезных парсеров, я о нем немного расскажу.

Иногда данные отображаются с помощью некоторого шаблона (например, таблица характеристик мобильного телефона), когда значения параметров стандартные, а меняются только их значения. В таком случае данные могут быть получены без анализа DOM дерева, а путем парсинга строк, например, как это сделано в Data Extracting SDK:

Компания: Microsoft
Штаб-квартира: Редмонд

Код:

string data = "

Компания: Microsoft

Штаб-квартира: Редмонд

"
;
string company = data.GetHtmlString("Компания: " , "

" );
string location = data.GetHtmlString("Штаб-квартира: " , "

" );

// output
// company = "Microsoft"
// location = "Редмонт"

* This source code was highlighted with Source Code Highlighter .

Использование набора методов для анализа строк иногда (чаще - простых шаблонных случаях) более эффективный чем анализ DOM дерева или XPath.

Регулярные выражения и парсинг XML

Очень часто видел, когда HTML полностью парсили с помощью регулярных выражений. Это в корне неверный подход, так как таким образом можно получить больше проблем, чем пользы.

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

Еще одним неэффективным подходом является рассматривать HTML как XML данные. Причина в том, что HTML редко бывает валидным, т.е. таким, что его можно рассматривать как XML данные. Библиотеки, реализовавшие такой подход, больше времени уделяли преобразованию HTML в XML и уже потом непосредственно парсингу данных. Поэтому лучше избегайте этот подход.

Визуальный подход

В данный момент визуальный подход находится на начальной стадии развития. Суть подхода в том, чтобы пользователь мог без использования программного языка или API «настроить» систему для получения нужных данных любой сложности и вложенности. О чем-то похожем (правда применимым в другой области) - методах анализа веб-страниц на уровне информационных блоков, я уже писал . Думаю, что парсеры будущего будут именно визуальными. Проблемы при парсинге HTML данных - использование JavaScript / AJAX / асинхронных загрузок очень усложняют написание парсеров; различные движки для рендеринга HTML могут выдавать разные DOM дерева (кроме того, движки могут иметь баги, которые потом влияют на результаты работы парсеров); большие объемы данных требуют писать распределенные парсеры, что влечет за собой дополнительные затраты на синхронизацию.

Нельзя однозначно выделить подход, который будет 100% применим во всех случаях, поэтому современные библиотеки для парсинга HTML данных, как правило, комбинируют, разные подходы. Например, HtmlAgilityPack позволяет анализировать DOM дерево (использовать XPath), а также с недавних пор поддерживается технология Linq to XML. Data Extracting SDK использует анализ DOM дерева, содержит набор дополнительных методов для парсинга строк, а аткже позволяет использовать технологию Linq для запросов в DOM модели страницы.

На сегодня абсолютным лидером для парсинга HTML данных для дотнетчиков является библиотека HtmlAgilityPack, но ради интереса можно посмотреть и на другие библиотеки.

Краткая предыстория

Придя на родной завод инженером в группу АСОДУ, на меня одной из задач легла обязанность сопровождать механизм сбора данных с различных видов регистрирующих устройств. Замечу, что на заводе неплохой «зоопарк» такого рода оборудования. Как известно, для регистрирующих устройств, всегда идёт специализированное программное обеспечение, которое позволяет осуществить его конфигурирование и опрос. Но далеко не со всеми видами приборов идёт программное обеспечение, с помощью которого можно получить данные с прибора и поместить их в общую среду для дальнейшей обработки и архивирования. Так вот такая проблема была решена ещё до меня, путём написания одной программы, которая бы опрашивала все приборы, имеющиеся в наличие, и выгружающая собранные данные в единую базу данных. Но проблема заключалась в том, что при появлении нового типа прибора постоянно приходилось перекомпилировать данную программу, кроме этого она жёстко привязана с конкретной СУБД. Не имея под рукой ни конфигуратора, ни какого-либо тестера, всё это приводило процесс сопровождения в сплошные муки. Вот тогда и появилась идея реализовать некую систему, которая максимально бы упрощала работу по сопровождению механизма сбора данных. Для такой системы мной были выдвинуты следующие требования:
  1. Опрашивать любой тип/вид прибора. Достигаться это должно путём расширения программы за счёт модулей.
  2. Выгружать данные как угодно, сколь угодно и когда угодно. Достигаться такой подход тоже должен за счёт модулей.
  3. Наличие инструмента, позволяющего как можно проще настроить весь процесс опроса.
  4. Наличие инструмента позволяющего протестировать и отладить как модули опроса, так и модули выгрузки данных.
  5. Задача опроса должна работать как служба, но при этом возможность визуального наблюдения за ходом выполнения опроса и выгрузки данных тоже должна присутствовать.

Инструментальные средства

Для реализации своей затеи я использовал следующие инструментальные средства:
Компиляторы: gcc-3.4.2, gcc-4.6.1 и tinyc-0.9.25
Графическая библиотека: wxWidgets-1.8.10 + wxFormBuilder-3.2
База данных: SQLite-3.7.6.2

Реализация

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

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

Ядро
Ядро программы представлено на рисунке ниже. Оно работает следующим образом. При чтении конфигурационного файла, загрузчиком, формируется конечный буфер (см. рисунок выше), список загруженных плагинов опроса, и список плагинов выгрузки данных. Ядру передаётся как сформированный буфер, так и списки плагинов. Ядро в свою очередь инициализирует на каждый com-порт поток, при этом, передаёт ему ветку буфера и список плагинов устройств. Как только потоки опроса все созданы, ядро начинает инициализировать по такой же схеме и потоки экспорта данных. Но, кроме перечисленного ранее, передаёт каждому константную ссылку на ветку опроса. Таким образом, потоки экспорта могут в любой момент получить всю информацию, как о ходе выполнения процесса опроса, так и получить конечные результаты опроса.

Так как имеется два вида программ опроса (в виде службы и в виде пользовательского графического приложения), то ядро помещается в динамическую библиотеку, которую используют оба приложения.

Все порождённые ядром потоки, кроме всего прочего, получают константную ссылку на само ядро. Таким образом, каждый из потоков может контролировать состояние ядра (RUN, STOP). В том случае если ядро переходит в режим STOP, то все потоки начинают автоматически завершать свою работу. При переходе в режим RUN, ядро заново создаёт вышеописанные потоки.

Интерфейс плагина опроса устройств
Для того, чтобы опросить прибор необходимо иметь две функции: функцию, которая формирует конечный пакет, отправляемый прибору, и функцию обрабатывающую полученный ответ от прибора. Таким образом, интерфейс плагина состоит из двух функций формирования и обработки пакета и ещё одной функции, которая возвращает информацию о нём. Данная информация, нужна как пользователю, так и программе, в связи с тем, что в её содержимом имеется информация о длине формируемого и отправляемого пакетов. В результате имеем следующие функции:
  • GetInfo – информация о плагине;
  • GetPackage – формирование пакета;
  • GetData – обработка полученного пакета.
Структуры, которыми оперируют эти функции, я думаю описывать излишне, ибо моей целью стоит описать общий принцип работы системы. Но кому стало интересно, может заглянуть в .
Интерфейс плагина экспорта
Интерфейс плагина экспорта состоит из четырёх функций:
  • About – информация о плагине;
  • Begin – функция выполняется единожды, после того как ядро переходит в режим RUN. Она ориентирована на то, чтобы осуществить какое-либо подключение к хранилищу данных. Если функция вернёт ошибку, то поток пишет ошибку в буфер и завершает свою работу.
  • Export – непосредственно экспорт данных;
  • End – функция выполняется единожды, после того как ядро переходит в режим STOP. Выполняется только в том случае, если функция Begin не вернула какую-либо ошибку. Функция ориентирована на то, чтобы осуществить отключение от хранилища данных.
Структуры, которыми оперируют эти функции, я также не буду описывать по причине указанной выше.

Результат

На данный момент в комплекс входит следующее программное обеспечение:
  • Editor – редактор конфигураций опроса;
  • ReaderGUI – программа опроса в виде пользовательского приложения;
  • ReaderSvc – программа опроса в виде службы Windows;
  • ReaderSvcCtrl – управление службой опроса;
  • TestExport – тестирование плагинов экспорта;
  • TestRequest – тестирование плагинов опроса.
Комплекс ориентирован на ОС Windows, хотя жёсткая привязка к WinAPI имеется только в классе, который осуществляет работу с COM-портом. Ну и естественно служба опроса устройств. Всё остальное же базируется на классах и функциях библиотеки wxWidgets.
Пример работы
Предположим, что имеется два прибора типа «rmt-59 » и «ecograph-t» . Каждый из них подключен на отдельный порт к преобразователю интерфеса «RS-485 – Ethernet». На компьютере, который осуществляет опрос, стоит драйвер преобразующий «Ethernet – RS232». Таким образом, мы имеем два com-порта (к примеру com-10 и com-11), на котором располагается по одному прибору. У обоих приборов, предположим, адрес 1. Оба прибора настроены на скорость передачи данных на 19200 бит/с.

Для начала нужно удостовериться, что имеющиеся плагины подходят для работы с данными приборами. Для этого запускаем программу TestRequest и пытаемся опросить эти приборы

После этого, следует создать конфигурацию опроса. Запускаем программу Editor и настраиваем опрос.

Если Вы создали новую базу, то необходимо прописать путь к ней в файле Reader.ini. Для теста работы опроса запускаем программу ReaderGUI

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

Теперь, когда мы удостоверились в верной работе плагина, можно добавить его в конфигурацию опроса.

Всё, конфигурирование и тестирование закончено. Теперь можно установить и запустить службу. Управление сервисом осуществляем при помощи программы ReaderSvcCtrl.

Послесловие

Конечно, я бы мог написать гораздо больше, но дабы не утомлять читателя, я не стану этого делать. Вот ссылка на мой проект. На все ваши вопросы я с удовольствием отвечу в комментариях.

Многие недостатки системы выяснились уже при эксплуатации. К таким недостаткам можно отнести следующее:

  1. Отсутствие типа опрашиваемого канала. Необходимость типа обуславливается тем, что многие приборы, для разных типов значений (аналоговый канал, математический канал, интегральное значение), требуют особо сформированный запрос.
  2. Отсутствие понятия множителя. Т.е. некоторые приборы при опросе, передают значение в виде целого числа. А позиция запятой в числе, у таких приборов, опрашивается отдельно. И имея такой множитель, пользователь мог бы изменять позицию запятой. К примеру, если по заданному каналу разделитель между целым и дробным значением ставится после первого числа, то множитель 0.1 позволял бы привести число в надлежащий вид. И получив значение 123, система, умножив это число на соответствующий множитель, выдавала бы результат 12.3.

Теги: Добавить метки

Более 10000 пользователей уже сделали правильный выбор!

Ни каких настроек, передач файлов, ожиданий…. всё работает «из коробки». Совместимо с большинством учетных программ и со всеми версиями 1С.

Просто установите приложение на телефон и компьютер, и мгновенно считывайте штрих-коды, или QR-коды прямо в свою учетную программу.

Сканер штрих-кода
В этом режиме телефон работает точно также, как и обычный сканер штрих кодов, подключенный к компьютеру. Более того, можно сразу указывать количество, видеть наименование и цену, сразу находить информацию о товаре в интернете, а для сканирования в 1С не нужно нажимать на кнопку "Поиск по штрих-коду" - это будет делаться автоматически. Если к телефону подключить обычный сканер штрих-кода, то телефон, в данном случае, сможет работать в качестве беспроводного удлинителя.

Терминал сбора данных - ТСД
Создавайте списки, в них считывайте любое количество штрих кодов, отправляйте списки на рабочий компьютер и выводите их в учетную программу. Быстро и без труда наполняйте любые документы – приходные накладные, инвентаризации, перемещения товаров, крупные реализации.

Инвентаризация
Если для инвентаризации режим ТСД вам не подходит и вы в процессе хотите проверять наименование товара, его учетное количество и цену, то данный режим то, что вам нужно. Вы одним «копировать/вставить» из обычной таблицы (Excel, 1C и тд) создаете «заготовку». Отправляете «заготовку» на телефон и считываете штрих-коды. После наполнения отправляете документ обратно в компьютер и выводите «фактические» данные в вашу учетную программу, удобным для вас способом.

Совместимость

MAGAZKA & MAGAZKA(NS) с релиза *.0240

Возможности приложения
Считывать штрих коды можно как камерой телефона, так и подключенным по USB сканером штрих-кода (максимальное быстродействие), или ручным вводом, с удобным поиском.

Автоматическая защита от случайных нажатий и потери данных - подключите к телефону USB сканер, положите телефон в карман, и с максимальной быстротой и комфортом набирайте списки штрих-кодов. При каждом считывании, телефон будет вам «откликаться».

Уникальный «Клавиатурный вывод» - передача списка штрих-кодов в любую учетную программу, без каких либо настроек - программа при этом будет «думать», что штрих-коды ей считываются с физического сканера, только очень быстро, со скоростью до 50 штрих-кодов в секунду.

Все данные передаются либо локально по WIFI, либо через сервера Barcode Harvester, которые находятся в интернете, при этом данные сжимаются и шифруются, обеспечивая высокий уровень безопасности и скорости.

А теперь рассмотрим на примере:

Интвентаризация товара

Создаем новый документ - заполняем по остаткам

Откроется новое окно обработки с заполненными данными

Нажимаем кнопку "Копировать все" и переходим в приложение BARCODE HARVESTER
вкладка "Инвентаризация"

нажимаем кнопку "Добавить"

Автоматически будет создана новая Инвентаризация с нашими данными

Нажимаем кнопку "Отправить" (как только отправлено на мобильное устройство) появится галочку на документе

и переходим на вкладке "Терминал сбора данных "

нажимаем + (что создать новую задачу )

и начинаем просто фотографировать штрихкода товара, об остальном позаботится приложение

Когда закончили. Нажимаем стрелочку - "Отправить данные"

Галочка на задаче - вам укажет, что данные отправлены

BARCODE HARVESTER
вкладка "Терминал сбора данных"

Нажимаем кнопку "Загрузить" (1)
видим наши данные

теперь нажимаем кнопку "Скопировать все"(2)
и переходим в MAGAZKA

Открываем документ "Списание товара"
Нажимаем кнопку - Заполнить - Обмен данными с штрихкод-комбайн

Нажимаем кнопку "Вставить все"

а потом кнопку "В документ"

Так же если вы хотите быть всегда в курсе своего товара! и не вспоминать как он называется, сколько стоит....
можно загрузить все ваши остатки на ваше мобильное устройство! Зачем?
Да потом просто сфотографировали товар и знаете по нему всю нужную информацию. Круто?

В обработке переходим на вкладку "Справочник Номенклатура"

Нажимаем кнопку "Заполнить таблицу"

можно настроить порядок выгрузки номенклатуры (ее представления)
Артикул, Код, Наименование, Полное наименование, Описание, Размер, разделитель

Нажимаем кнопку "Копировать все"

Переходим на компьютере в приложение BARCODE HARVESTER
вкладка "Параметры"

и нажимаем кнопку "Создать вставкой"

Нажимаем кнопку "Отправить " все ваши данные переданы в мобильное приложение
Приятной работы

Ну и это еще не все!
у вас нет сканера штрихкода или он сломался... но у вас же всегда есть под рукой телефон и изумительное приложение BARCODE HARVESTER

Переходим на компьютере в приложение BARCODE HARVESTER
вкладка "Сканер штрихкода "
нажимаем включить...и все...все работает

вы фотографируете штрихкод товара, а он (товар) добавляется в открытую форму документа MAGAZKA
это удивительно и увлекательно!

А теперь вопросы:
Как мобильное приложение обменивается данными с компьютером

Через интернет (встроенный сервис программы)
- через общую сеть WI-FI

Сколько мобильный устройств может работать с одним компьютером?
- теоретически сколько угодно- ограничений нет

Как мобильное устройство узнает нужный компьютер и программу?

Мобильное устройство нужно зарегистрировать в программе
это очень просто - нужно от сканировать штрихкод в программе

Переходим на компьютере в приложение BARCODE HARVESTER
вкладка "Привязать к смартфону"

Если справка по работе с программой BARCODE HARVESTER
- да конечно, все очень понятно описано и сделано

а также на сайте программы

Как протестировать и начать работать в MAGAZKA ?

Данный функционал будет доступен с релиза *.0240
- нужно добавить обработку заполнения табличных частей

ОбработкаЗаполненияШтрихКодКомбайнMAGAZKA.epf

для MAGAZKA (NS)

ОбработкаЗаполненияШтрихКодКомбайнMAGAZKA_NS.epf

Поддерживается почти всеми документами:

Ввод остатков
- Приходная накладная
- Расходная накладная
- Перемещение товара
- Списание товара
- Оприходование товара
- Заказ покупателя
- Переоценка товара
- Инвентаризация

Как подключить данный механизм:

Обращаю внимание:
добавляем не как ВНЕШНЮЮ ОБРАБОТКУ,

а ВНЕШНИЕ ОБРАБОТКИ ЗАПОЛНЕНИЯ ТАБЛИЧНЫХ ЧАСТЕЙ



и запускается только из формы документов - меню - заполнить - Обмен данными с Штрихкод-Комбайн

Парсеры — это программы или скрипты, осуществляющие сбор различного контента с других сайтов. В зависимости от требований могут быть настроены на полное или частичное копирование контента выбранного сайта. Разделяются на узкоспецилизированные (копируют текст или изображения) и универсальные (копируют текст и картинки вместе). В основном используются для парсинга контента сайтов и результатов выдачи поисковых систем. Парсеры сайтов помогают вебмастеру собирать контент, анализировать его и наполнять им свои проекты.

Популярные парсеры сайтов

Парсер «Ночной дозор»

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

Парсинг происходит посредством составления макросов, после чего программа в автоматическом режиме выполняет запрограмированные действия без вашего участия и присмотра. Это позволяет использовать программу в любое удобное время суток на полном автомате. Поддерживает все популярные CMS: WordPress, Joomla, DLE, Drupal, Ucoz а также самописные. Работает в фоновом режиме или по расписанию.

На данное время программа вне конкуренции от других, одно из главных отличий этого парсера, не требует от пользователя знаний программирования. Русский интерфейс, видео уроки по работе, делают программу доступной любому пользователю. СКАЧАТЬ

— бесплатный граббер текста под любые нужды и цели. Шустрый, многопоточный граббер собирает также ссылки со страниц сайтов. Работать легко и удобно. В поле «сайт» вставляете нужный URL со слешем на конце «/». Выставляете нужное количество потоков, редактируете «Black list» потом жмем на старт. На выходе в папке «up»получите текстовый файл с адресами. Чтобы начать парсинг текста, ставим галочку на «селективный парсинг», потом жмем «SelectiveParse». Заполняем поля с настройками, запускаем парсинг. Подробнее по настройке, а также скачать можно .

— популярный в среде вебмастеров, универсальный парсер контента. Умеет спарсить как определенную часть контента сайта или полностью весь сайт. Способен разделять информацию и обрабатывать ее в соответствии с поставленной задачей.

Возможности Sjs:

  • Полный граббинг сайта
  • Частичный граббинг
  • Парсинг по меткам
  • Парсинг URL по шаблону
  • Работа с фильтром
  • Граббит статьи с форматированием и изображениями
  • Очищает текст от мусора и ненужных символов
  • Удаляет ненужные мета-теги
  • Настройка парсинга из файла
  • Установка глубины парсинга
  • Сохранение результатов в форматах TXT, CSV, WPT, Zebrum lite и др.

Граббер очень легко настроить под свои потребности или нужды. Например для наполнения интернет-магазина или каталогов. К сожалению автор свой проект больше не поддерживает. Но скачать парсер Sjs в сети можно без проблем.

Сайтов помогают вебмастеру без особого труда собрать нужную информацию за минимум времени