C # HTML agility pack, extraire le texte brut d'un div

c# html html-agility-pack

Question

Je suis en train d'essayer de tirer de petites phrases de site (lol).

Le HTML de ce que j'essaie de tirer est ci-dessous.

<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>

Le code que j'utilise actuellement ne fonctionne pas.

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();
     }

évidemment cela ne fonctionne pas et je ne suis pas sûr de savoir comment tirer le texte. Je n'arrête pas de trouver des informations simplement en tirant

Merci d'avance.

Réponse acceptée

On dirait que le parent de votre div cible a reçu le teaser-content classe teaser-content qui peut être un bon identifiant. Le XPath suivant doit renvoyer le div recherché:

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

Ensuite, vous pouvez obtenir le texte du contenu de la div partir de la propriété InnerText , par exemple (remplacez SelectSingleNode() par SelectNodes() et parcourez le résultat si vous voulez que tous les s div soient remplacés par le premier):

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

sortie:

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow