C # HTML-пакет гибкости, потянув простой текст из div

c# html html-agility-pack

Вопрос

Я пытаюсь вытащить короткие небольшие рекламные ролики с сайта (lol).

HTML того, что я пытаюсь вытащить, ниже.

<div class="field field-name-field-body-medium field-type-text-long field-label-hidden">
The community comics collaboration is back for another heaping helping of Academy fun!
</div>

код, который я использую в настоящее время, который не работает.

var shortBio = doc.DocumentNode.Descendants("div").Where(p => p.Attributes.Contains("class") && p.Attributes["class"]
         .Value.Contains("field field - name - field - body - medium field - type - text - long field - label - hidden"));


 for (int i = 0; i < 5; i++)
     {
         blurbs[i] = shortBio.ElementAt(i).ToString();
     }

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

Заранее спасибо.

Принятый ответ

Похоже, родитель вашего целевого div получает класс teaser-content который может быть хорошим идентификатором. Следующий XPath должен вернуть требуемый div :

//div[@class='teaser-content']/div

Затем вы можете получить текст содержимого div из свойства InnerText , например (замените SelectSingleNode() на SelectNodes() и итерации по результату, если вы хотите, чтобы все div s вместо первого):

var doc = new HtmlWeb().Load("http://na.leagueoflegends.com/en/news/");
var div = doc.DocumentNode.SelectSingleNode("//div[@class='teaser-content']/div");
Console.WriteLine(div.InnerText);

dotnetfiddle demo

вывод :

The community comics collaboration is back for another heaping helping of Academy fun!


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему