2010-11-13 4 views
1

Мне нужно очистить текст сообщений в блоге, чтобы составить краткое описание сообщений в блогах, похожих на то, что делает techmeme.com. не проблема, когда это одна или несколько сообщений в блоге. однако возможные блоги, из которых можно очистить текст, являются переменными и неограниченными. как бы вы это сделали?интересная новостная статья/проблема с выскабливанием блога

Я использовал hmml agility pack и yql в прошлом, но нет ничего встроенного ни в одно из этих решений для обработки этого требования.

Одна мысль, что я должен был искать div id и атрибуты div, называемые такими вещами, как контент, сообщение, статья и т. Д., И посмотреть, как это работает - на самом деле не наклоняется в этом направлении. другая идея состояла в том, чтобы найти самый большой текстовый узел в html-документе и предположить, что это тот узел, который я хочу - может привести к некоторым ложным срабатываниям. конечная идея состояла в том, чтобы попытаться создать хранилище данных с копираусами в приложениях Google, которые позволят сообществу управлять (читать: создавать, обновлять, удалять) сопоставления xpath для большинства популярных платформ новостей и блогов, тогда вы можете запросить этот список по типу домена или блога и получить необходимый xpath - но это похоже на дело hella.

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

что вы думаете?

+0

Мои мысли, что я абсолютно презираю сайты, которые переиздают контент от оригинальных авторов. Вы не только пытаетесь заработать деньги на чужой работе, но и загрязняете пространство поиска. ОСТАНОВИТЕ ЭТО. – Chris

+1

Крис, ты предполагаешь, что знаешь, что мы пытаемся сделать. ОСТАНОВИТЕ ЭТО. Мы просто хотим получить резюме, похожее на веб-сайт, упомянутый выше. Чтение может помочь вам в будущем. – brooks

ответ

1

Единственный надежный способ сделать это - иметь класс для каждого блога. Таким образом, вы можете делать то, что вам нужно, в реализации каждого конкретного класса для каждого конкретного блога.

Итак, у вас будет абстрактный базовый класс, который обрабатывает блог и возвращает данные/информацию, которые вам нужны из блога.

, например

public abstract class BlogProcessor 
{ 
    public abstract BlogResult ProcessBlog(string url); 
} 

Где BlogResult тип можно определить, что имеет всю информацию, вам нужно от блога, такие как название, дата, теги, сообщение и т.д.

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

Если вы звоните код, который вы будете рассматривать эти дочерние классы pollymorphic-союзника, как так:

foreach(var url in BlogsToParse) 
{ 
    var blogProcessor = BlogProcessorFactory.CreateInstance(url); 
    var blogResult = blogProcessor.ProcessBlog(url); 
    /* Do Something with blogResult */ 
} 

Имеет ли это смысл?

В реализации каждого метода «ProcessBlog» вы можете использовать HtmlAgilityPack для выполнения конкретного анализа.

+0

это не может работать. мы не знаем, что блоги раньше времени. как я уже упоминал, «возможные блоги, из которых можно очистить текст, являются переменными и неограниченными». – brooks

+0

переменная и неограниченная. * Не * подразумевается неизвестно. Может быть, вы должны быть более ясными и читать вопросы перед публикацией? :) –

+0

shiv, у нас не может быть класса для каждого блога. это не правдоподобно. в Интернете есть миллионы блогов. поэтому в этом случае переменная и неограниченная, безусловно, подразумевают неизвестность. если мы не говорим на другом языке здесь. – brooks

Смежные вопросы