Paquete de agilidad HTML de C #, que extrae texto sin formato de un div

c# html html-agility-pack

Pregunta

Estoy tratando de sacar pequeñas propagandas cortas del sitio (lol).

HTML de lo que estoy tratando de sacar está abajo.

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

Código que estoy usando actualmente que no funciona.

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

Obviamente, esto no funciona y no estoy seguro de cómo extraer el texto. Sigo encontrando información sobre solo tirar

Gracias de antemano.

Respuesta aceptada

Parece que al padre de tu div destino se le asigna una clase teaser-content que puede ser un buen identificador. La siguiente XPath debería devolver el div deseado:

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

Luego, puede obtener el texto del contenido del div desde la propiedad InnerText , por ejemplo (reemplace SelectSingleNode() con SelectNodes() e itere a través del resultado si desea que todos los div s en lugar de solo el primero):

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

salida:

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué