Quiero usar el paquete de agilidad HTML para analizar los enlaces de imagen y href desde una página HTML, pero simplemente no sé mucho sobre XML o XPath. Aunque busqué documentos de ayuda en muchos sitios web, simplemente no puedo resuelva el problema. Además, uso C# en VisualStudio 2005. Y no puedo hablar inglés con fluidez, por lo tanto, le agradezco sinceramente que uno pueda escribir algunos códigos útiles.¿Cómo obtener img/src o a/hrefs usando Html Agility Pack?
Respuesta
El first example en la página principal hace algo muy similar, pero tener en cuenta:
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm"); // would need doc.LoadHtml(htmlSource) if it is not a file
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
string href = link["href"].Value;
// store href somewhere
}
Así se puede imaginar que para img src @, basta con sustituir cada a
con img
y href
con src
. Usted podría incluso ser capaz de simplificar a:
foreach(HtmlNode node in doc.DocumentElement
.SelectNodes("//a/@href | //img/@src")
{
list.Add(node.Value);
}
Para manipulación URL relativa, mirar a la clase Uri
.
Muchas gracias! Y esta es mi primera experiencia – iShow
+1 @Marc ... Sobresaliente ... Esto es exactamente lo que estoy buscando ... –
Aparece el error: DocumentElement no existe en el objeto HtmlDocument para 1.4. 0.0 versión HtmlAgilitypack foreach (enlace HtmlNode en doc.DocumentNode.SelectNodes ("// a [@href]")) { HtmlAttribute att = link.Attributes ["href"]; – Kiquenet
El ejemplo y la respuesta aceptada es incorrecta. No compila con la última versión. Intento algo más:
private List<string> ParseLinks(string html)
{
var doc = new HtmlDocument();
doc.LoadHtml(html);
var nodes = doc.DocumentNode.SelectNodes("//a[@href]");
return nodes == null ? new List<string>() : nodes.ToList().ConvertAll(
r => r.Attributes.ToList().ConvertAll(
i => i.Value)).SelectMany(j => j).ToList();
}
Esto funciona para mí.
Quizás estoy demasiado tarde aquí para publicar una respuesta. Lo siguiente funcionó para mí:
var MainImageString = MainImageNode.Attributes.Where(i=> i.Name=="src").FirstOrDefault();
- 1. HTML Agility Pack
- 2. Obtener contenido entre dos etiquetas HTML usando Html Agility Pack
- 3. Html Agility Pack ayuda
- 4. C# Html Agility Pack (SelectSingleNode)
- 5. HTML Agility Pack Seleccionar nodos
- 6. HTML Agility Pack HtmlDocument ¿Mostrar todo Html?
- 7. Reemplazar una etiqueta div HTML InnerText usando HTML Agility Pack
- 8. HTML Agility pack - tablas de análisis
- 9. Obtener enlaces en clase con html agility pack
- 10. Html Agility Pack: Buscar Nodo de comentario
- 11. HTML agility pack create new HTMLNode
- 12. ¿Puedo usar Html Agility Pack para esto?
- 13. Html Agility Pack/C#: cómo crear/reemplazar etiquetas?
- 14. HTML Agility Pack: seleccione nodos después del nodo específico
- 15. ¿Cómo uso HTML Agility Pack para editar un fragmento de HTML?
- 16. Extraer texto interno del nodo HTML BODY con Html Agility Pack
- 17. ¿El Html Agility Pack sigue siendo el mejor analizador HTML .NET?
- 18. Cómo agotar el tiempo de espera de una solicitud utilizando Html Agility Pack
- 19. HTML Agility Pack: ¿cómo se puede agregar un elemento en la parte superior del elemento principal?
- 20. ¿Cómo puedo usar HTML Agility Pack para recuperar todas las imágenes de un sitio web?
- 21. Etiquetas de la tira HTML Agility Pack NO EN la lista blanca
- 22. Analizando HTML para obtener contenido usando C#
- 23. Agregue un doctype a HTML a través del paquete HTML Agility
- 24. ¿Cómo funciona git-receive-pack?
- 25. javascript obtener html o texto de div
- 26. cómo obtener la TABLA HTML Particullar Cell Value usando javascript?
- 27. ¿Cómo puedo obtener enlaces href desde HTML usando Python?
- 28. ¿Cómo obtener el atributo lang en HTML usando JavaScript?
- 29. ¿Cómo obtener html <td> valores usando javascript?
- 30. Variaded Templates pack expansions
Y, ¿puede Html Agility Pack resolver rutas relativas? – iShow