Попробовал создать канал из rss ленты - получается, сделано очень удобно, гораздо проще чев трубах.
Попробовал сделать тоже самое для сайта с простой структурой, не имеющего rss ленты: http://www.contr-tv.ru/. Не получилось:
WebClient:LoadChannelFromFeed: В экземпляре объекта не задана ссылка на объект.
В трубах из такого сайта rss ленту сделать можно. А у вас?
Channel Template:
// В этом блоке мы собираем ссылки на статьи
try{
var d = new Document(channel.url, channel.encoding);
var els = d.getElementsByAttr('div', 'class', 'anonsTitle');
for(var i=0; i< els.length; i++){
var cel = els[i];
var a = new Article();
a.id = a.url = 'http://www.contr-tv.ru' +
cel.getElementsByTagName('a')[0].getAttribute('href');
channel.articles.push(a);
}
}catch(ex){errorMessages.Add(ex)}
Article Template:
// В этом блоке собираем текст статьи и дату
try{
// Будем использовать версию "для печати"
// (в "обычной версии" нет даты публикации новости)
var d = new Document(article.url.replace('common', 'print'),
channel.encoding);
var el = d.getElementsByAttr("div", "style" , "padding: 0 50 0 50")[0];
article.body = el.innerHTML;
// Версия для печати поможет нам вытащить дату
article.date = DateTime.Parse(d.getElementsByTagName('div')[0]
.innerText.replace('Интернет против Телеэкрана, ', ''));
}catch(ex){errorMessages.Add(ex)}
У приведенного мной выше шаблона есть недостаток - он не верно определяет дату публикации новости. Как сделать правильный шаблон подробно расписано
в руководстве по разработке каналов для сайтов без RSS-лент.
Только собрался редактировать ваш предыдущий шаблон, а вы уже все сделали и написали замечательное руководство. Спасибо! На основе этого примера можно раздраконить кучу сайтов. Буду разбираться дальше.