Cómo seleccionar una celda de tabla específica usando HTML Agility Pack

html-agility-pack vb.net xpath

Pregunta

Tengo que sacar campos particulares de celdas en una tabla HTML. Usando Firebug pude obtener el XPath exacto para las celdas que necesito (desafortunadamente, las celdas no tienen una etiqueta de identificación). Pensé que podría usar DocumentNode.SelectSingleNode y pasar por ese camino, pero no parece funcionar correctamente. ¿Qué estoy haciendo mal? ¿O hay un mejor enfoque para esto que cómo lo estoy haciendo? Desafortunadamente, no tengo experiencia con XPath, así que esto está resultando más difícil de lo que esperaba. Esto es lo que tengo hasta ahora (sé que el HTML es particularmente desordenado, pero no puedo cambiarlo):

Dim page As New HtmlAgilityPack.HtmlDocument
Dim node As HtmlAgilityPack.HtmlNode
page.LoadHtml(fileContents)
node = page.DocumentNode.SelectSingleNode("/html/body/form/div[6]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[2]")

Muy apreciado.

Respuesta aceptada

Firebug puede arreglar etiquetas html rotas. Si desea seleccionar un nodo HTML, se recomienda usar class o id. Por ejemplo:

//div[@class='content']//table//tr[1]/td[2]

acortar la ruta, y usar el selector de clase o id.

Si la tabla tiene su propia identificación, puedes usar:

//div[@class='content']//table//tr[1]/td[2]

Pruébalo, encontrarás que XPATH es interesante.




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é