Seleccione html específico con "Html Agility pack"

c# html-agility-pack

Pregunta

Estoy usando html-agility-pack y tratando de seleccionar un html específico en él. La parte que quiero obtener es cada número de GTIN en estos bloques:

<td><span class="mobile-only">GTIN:</span>07330155011068</td>

-La parte que quiero son los números después de la etiqueta span final. Ejemplo: 07330155011068. A continuación se encuentra mi html y mi método c #:

<td><span class="mobile-only">GTIN:</span>07330155011068</td>

Y estoy usando este método para tratar de obtener mis valores. El problema es que no sé qué código escribir en SelectNode () para obtener el HTML interno que contiene los números de GTIN.

<td><span class="mobile-only">GTIN:</span>07330155011068</td>

Respuesta aceptada

Use Xpath para seleccionar las cuartas celdas del cuerpo de la tabla con id tableSearchArticle . Luego obtenga el texto interno de las celdas (será sin etiquetas html, como GTIN:07330155114059 ) y elimine el prefijo GTIN:

var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td[4]";
var gtins = doc.DocumentNode.SelectNodes(xpath)
               .Select(td => td.InnerText.Replace("GTIN:", ""));

Salida:

var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td[4]";
var gtins = doc.DocumentNode.SelectNodes(xpath)
               .Select(td => td.InnerText.Replace("GTIN:", ""));

Respuesta popular

SelectNodes recibe una expresión Xpath. Entonces, podrías comenzar con esto (sin probar):

foreach (HtmlNode tr in doc.DocumentNode.SelectNodes(
   "//div[@class='table-wrapper']/table[@id='tableSearchArticle']/tbody/tr"))
{
    Console.WriteLine(tr.InnerHtml);
    Console.WriteLine(tr.SelectSingleNode(".//a").GetAttribute("href"));
    Console.WriteLine(tr.SelectSingleNode(".//td[last()]").InnerText);
}



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é