Вопрос

Как бы я использовал пакет гибкости HTML, чтобы получить первый абзац текста из тела файла HTML. Я строю инструмент подачи ссылок в стиле Digg и хочу получить заголовок и первый абзац текста. Название легко, какие -либо предложения о том, как я могу получить первый абзац текста от тела? Я думаю, что это может быть в пределах p или div в зависимости от страницы.

Это было полезно?

Решение

Этот HTML, который вы контролируете? Если это так, вы можете дать P идентификатор или класс и найти его через

//p[@id=\"YOUR ID\"] or //p[@class=\"YOUR CLASS\"]

РЕДАКТИРОВАТЬ: Поскольку вы не контролируете HTML, может быть, ниже будет работать. Это требует всех HTMLTextNodes и пытается найти группировку текста, превышающую указанный порог. Это далеко не идеально, но может заставить вас двигаться в правильном направлении.

String summary = FindSummary(page.DocumentNode);

private const int THRESHOLD = 50;
private String FindSummary(HtmlAgilityPack.HtmlNode node) {
    foreach (HtmlAgilityPack.HtmlNode childNode in node.ChildNodes) {
        if (childNode.GetType() == typeof(HtmlAgilityPack.HtmlTextNode)) {
            if (childNode.InnerText.Length >= THRESHOLD) {
                return childNode.InnerText;
            }
        }

        String summary = FindSummary(childNode);
        if (summary.Length >= THRESHOLD) {
            return summary;
        }
    }

    return String.Empty;
}

Другие советы

Пакет гибкости использует XPath для запроса HTML -загрузки, который вы просто используете простой оператор XPATH. Что-то типа...

HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(content);

HtmlNodeCollection firstParagraph = htmldoc.DocumentNode.SelectNodes("//p[1]");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top