Data Extracting SDK написан на .NET Framework 3.5 и содержит средства для извлечения и анализа данных из текстовых файлов и web-ресурсов. Прислушиваясь к результатам опроса выкладываю первую версию Data Extracting SDK CTP (Community Technical Preview) на всеобщее обозрение.
Основные возможности:
Области применения:
Класс HtmlProcessor предназначен для загрузки и обработки HTML.
Основные возможности:
Диаграмма классов представлена ниже (кликабельно):
Пример работы с HtmlProcessor:
WebProxy можно упустить в конструкторе.
Чтобы послать POST запрос, необходимо воспользоваться таким кодом:
Класс LinksExtractor предназначен для извлечения ссылок.
Основные возможности:
Правила:
Пример использования:
В CTP версии свойство Maximum ограничено значением 100.
Пример реального использования — Как получить список сайтов в заданной зоне.
О классе WebScreenshotExtractor и программе, которая использует его, можно почитать здесь.
О классах EmailsExtractor, PhonesExtractor, UrlsExtractor, GuidExtractor, SEO и других возможностях поговорим в следующий раз, но некоторые примеры уже можно посмотреть здесь.
Скачать Data Extraction SDK v.1.0 CTP с cайта Codeplex
С помощью данного SDK были разработаны такие приложения:
Хотелось бы услышать:
Ну и, наконец, если у вас есть задачи по извлечению данных — обращайтесь :)
Спасибо за внимание!
Основные возможности:
- Html Processing — загрузка, анализ html
- DOM анализ — получение ссылок, изображений, таблиц
- извлечение ссылок, фильтры, возможность написания своих фильтром, глубокий анализ сайта
- извлечение электронных адресов, телефонов, urls и т.д.
- анализ контента сайта (количество элементов, плотность слов)
- возможности для SEO анализа
Как можно использовать Data Extracting SDK
Области применения:
- программы для сбора необходимой информации
- разработка аналитических сервисов, анализ сайтов и контента
- программы для составления баз данных, списков
- программы для анализа конкурентов
- SEO программы
- автоматизация работы с веб-ресурсами
- программы-кроулеры
Классы HtmlProcessor и ContentAnalyzer
Класс HtmlProcessor предназначен для загрузки и обработки HTML.
Основные возможности:
- поддержка прокси
- поддержка UserAgent
- извлечение заголовков, метатегов, изображений, ссылок, ключевых слов и др.
- работа с таблицами (поиск, фильтры)
- поддержка GET и POST протоколов
Диаграмма классов представлена ниже (кликабельно):
Пример работы с HtmlProcessor:
HtmlProcessor proc = new HtmlProcessor(
new Uri("http://www.microsoft.com/"),
new WebProxy("http://111.111.11.1/", true));
proc.Initialize(); // Инициализация
string html = proc.InnerHtml; // Получаем Html код страницы
string text = proc.InnerText; // Получаем текст страницы
// Возвратит DataTable первой таблицы
DataTable dt = proc.GetDataTableByTableIndex(0);
// Возвратит "Access and connect with thousands of
// Microsoft Certified companies to find products and services"
string value = proc.GetHtmlString("Microsoft Pinpoint", "</div></div>").RemoveHtmlTags();
// Возвратит список изображений
List<ImageInfo> images = proc.Images;
* This source code was highlighted with Source Code Highlighter.
WebProxy можно упустить в конструкторе.
Чтобы послать POST запрос, необходимо воспользоваться таким кодом:
HtmlProcessor proc = new HtmlProcessor(
new Uri("http://www.microsoft.com/"),
new WebProxy("http://11.11.1.1:111/", true));
proc.HttpMethod = HttpMethods.POST;
var parameters = new NameValueCollection();
parameters.Add("name", "value");
proc.PostParameters = parameters;
proc.Initialize();
* This source code was highlighted with Source Code Highlighter.
Класс LinksExtractor
Класс LinksExtractor предназначен для извлечения ссылок.
Основные возможности:
- извлечение ссылок по заданному url
- поддержка прокси
- возможность извлекать видимые / невидимые ссылки
- глубокий анализ страниц (in depth)
- управление максимальным количеством извлекаемых ссылок
- поддержка фильтров и правил извлечения
Правила:
- TextMustContainCondition — текст ссылки должен содержать некое значение
- TextMustNotContainCondition — текст ссылки не должен содержать некое значение
- SameDomainCondition — ссылки должны находиться в одном домене что и страница (только внутренние ссылки)
- LinkIdMustContainCondition — id ссылки должен содержать некое значение
- LinkIdMustNotContainCondition — id ссылки не должен содержать некое значение
- HrefMustContainCondition — href ссылки должен содержать некое значение
- HrefMustNotContainCondition — href ссылки не должен содержать некое значение
public interface ICondition
{
bool Satisfied(LinkInfo linkInfo, string value);
bool Satisfied(string linkInfo, string value);
}
Пример использования:
LinksExtractor ext = new LinksExtractor(new Uri("http://microsoft.com/"));
// Извлекать только те ссылки, href которых содержит строку "microsoft"
ext.AddRule("microsoft", new HrefMustContainCondition());
// Извлекать максимум 10 ссылок
ext.Maximum = 10;
// Извлекать скрытые сслыки
ext.ExtractHidden = true;
// Извлечь
ext.Extract();
// Получить список всех извлеченных ссылок
var links = ext.Links;
* This source code was highlighted with Source Code Highlighter.
В CTP версии свойство Maximum ограничено значением 100.
Пример реального использования — Как получить список сайтов в заданной зоне.
Другие классы
О классе WebScreenshotExtractor и программе, которая использует его, можно почитать здесь.
О классах EmailsExtractor, PhonesExtractor, UrlsExtractor, GuidExtractor, SEO и других возможностях поговорим в следующий раз, но некоторые примеры уже можно посмотреть здесь.
Скачать Data Extraction SDK v.1.0 CTP с cайта Codeplex
Несколько слов о реальном использовании
С помощью данного SDK были разработаны такие приложения:
- Australian Yellow Pages data extractor (private project)
- Emails Extractor
- Phones Extractor
- Links Extractor
- Facebook data extractor (private project)
- Google web search results extractor
- Google related websites extractor
- PageRank Extractor
- SmartBrowser (анонс на хабре)
- Website Screenshots and Thumbnails Extractor (анонс на хабре)
- и др.
Обратная связь
Хотелось бы услышать:
- замеченные баги
- возможные варианты расширения функциональности
- ответ на вопрос, сколько вам не жалко отдать кровных за лицензию на такого рода продукт
Ну и, наконец, если у вас есть задачи по извлечению данных — обращайтесь :)
Спасибо за внимание!