Дмитрий Нестепук
Блог за програмиране - C #, F #, C ++, Архитектура и др
Преглед на задачата
И така, имаме може би най-„размазаните“ от възможните задачи - получаване, обработка и съхраняване на данни. За какво, за да получим работеща система, трябва да знаем
- Къде са данните и как да ги осъществим правилно
- Как да обработвате данни, за да получите само това, от което се нуждаете
- Къде и как да съхранявате данни
Източници на данни
Нека да разгледаме източниците на данни, от които трябва да получите информация:
- Форуми
- Блогове
- Новини сайтове
- Каталози, листинги
- Обществени уеб услуги
- Приложен софтуер
Друг проблем е, че понякога съдържанието се зарежда динамично чрез AJAX, което налага наличието на различни видове ‘stateful’, за да се получи съдържание точно когато е налично.
Обработка на данни
Обработката на данни е най-трудоемката и скъпа (от гледна точка на потенциалния клиент) операция. От една страна, може да изглежда, че един и същ HTML трябва да бъде много лесен за анализиране със съществуващите инструменти, но в действителност не е така. Първо, HTML в повечето случаи не е XHTML, с други думи, като направите XElement.Parse (), просто ще получите изключение. Следователно трябва поне да можете да „коригирате“ зле написания HTML.
Дори и с добре оформени данни, пак ще имате много проблеми - в края на краищата всяка повече или по-малко сложна уеб страница е проекция на многоизмерната структура на базата данни на собственика върху едномерно пространство. По този начин възстановяването на връзки и зависимости е необходима задача за съхраняване на получената информация в релационни бази данни.
Хранилище за данни
След като сте получили данните, трябва да ги съхраните някъде. Има много опции за съхранение - с помощта на сериализация, текстови файлове, както и обектно и документно ориентирани, както и разбира се релационни бази данни. Изборът на хранилище в търговска поръчка най-вероятно зависи или от клиента („искаме MySQL“), или от финансовите предпочитания на клиента. При разработката на .Net базата по подразбиране е SQL Server Express. Ако правите хранилище за себе си, можете да използвате всичко, което искате - било то MongoDB, db4o или, например, SQL Server 2008R2 Datacenter Edition.
В повечето случаи хранилищата с данни не изискват особена сложност. потребителите просто проектират базата данни в Excel (добре, или SPSS, SAS и т.н.) и след това използват познати методи за анализ. Опции като SSAS (SQL Server Analysis Services) се използват много по-рядко (поради минималната цена от 7500 долара - вижте тук), но си струва да знаете и за тях.
Малък пример
Нека да разгледаме минимална част от кода, която ще ни помогне да изтеглим и анализираме страницата. За тези задачи ще използваме два пакета:
- WatiN е библиотека за тестване на уеб интерфейси. Добре е да го използвате за автоматични натискания на бутони, избор на елементи от списък и други подобни. WatiN също предоставя обектен модел за извлечената страница, но не бих го използвал. Има една обща причина - WatiN е нестабилна и много капризна библиотека, която трябва да се използва с повишено внимание (само в 32-битов режим!) За контрол на браузъра.
- HTML Agility Pack е библиотека за синтактичен анализ на HTML. Самият HTML може да бъде взет от WatiN, изтеглен и дори ако е неправилно оформен, Agility Pack ще ви позволи да търсите и избирате в него с помощта на XPath.
Ето минимален пример за това как можете да използвате тези две рамки заедно, за да получите страница от сайт:
Вероятно е очевидно за вас, че записването на данни в някакво хранилище не се извършва от конзолно приложение. В повечето случаи за това се използва услугата windows. И това, което услугата прави, в повечето случаи е анкетиране, тоест нормативно изтегляне на ресурс и актуализиране на нашето разбиране за него. Изтеглянията обикновено се извършват на интервали от N минути/часове/дни.
За добро поведение при обслужване са ви необходими още няколко полезни трика. Първо, полезно е да добавите възможността за стартиране от конзолата към услуги. Помага при отстраняване на грешки.
Друга полезна функция е саморегистрирането, така че вместо да използвате installlutil, можете да инсталирате услугата чрез myservice/i. За това има отделен клас ...
Инсталационният клас използва познатия System.Configuration.Install монтаж. Използва се директно от Main ():
Е, последната функция е, разбира се, използването на регистрация. Използвам библиотеката log4net и можете да използвате много вкусна функция, наречена ColoredConsoleAppender, за да пишете дневници в конзолата. Самият процес на регистриране е примитивен.
Няколко важни правила
Достатъчно информация за първи път. Накрая искам да ви напомня няколко прости правила:
- Стартирането на IE изисква апартамент с една нишка; Наистина използвам FireFox. Харесвам FireBug
- WatiN трябва да се изпълнява в 32-битова програма (x86)
- Горното проучване не е идеално, защото не отчита факта, че самата WatiN също забавя разбора на HTML - това също не е бърза операция
Говорейки за птици ... вместо услуга, можете по принцип да направите EXE и да го стартирате през разпределителя. Но е някак подредено.
Благодаря ви за вниманието. Следва продължение:)
- Wp_login_form () - Показва HTML код на формата за упълномощаване (вход)
- Направи си сам анонимност в интернет
- Ефект на електролитите върху сапунено лепило
- Влюбена двойка се раздели заради снимка на х
- GBUZ SONKOVSKAYA CRH - ТВЕР РЕГИОН, градско селище