Voglio usare il pacchetto agility HTML per analizzare i collegamenti immagine e href da una pagina HTML, ma non so molto di XML o XPath. Anche se ho cercato documenti di aiuto in molti siti web, non posso proprio risolvo il problema.Inoltre, io uso C# in VisualStudio 2005. E non riesco a parlare inglese correntemente, quindi, darò i miei sinceri ringraziamenti a chi può scrivere alcuni codici utili.Come ottenere img/src o a/hrefs utilizzando Html Agility Pack?
risposta
La first example sulla home page fa qualcosa di molto simile, ma prendere in considerazione:
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
}
Così si può immaginare che per img src @, basta sostituire ogni a
con img
, e href
con src
. Si potrebbe anche essere in grado di semplificare a:
foreach(HtmlNode node in doc.DocumentElement
.SelectNodes("//a/@href | //img/@src")
{
list.Add(node.Value);
}
Per una manipolazione URL relativo, guardate la classe Uri
.
ringrazio molto e questa è la mia prima esperienza chiedendo – iShow
+1 @ Marc ... eccezionale ... Questo è esattamente quello che sto cercando ... –
ottengo l'errore:! DocumentElement non esiste in oggetto HtmlDocument per 1,4. 0.0 versione HtmlAgilityPack foreach (link HtmlNode a doc.DocumentNode.SelectNodes ("// un [@href]")) { HtmlAttribute att = link.Attributes [ "href"]; – Kiquenet
L'esempio e la risposta accettata sono errati. Non viene compilato con l'ultima versione. Provo qualcos'altro:
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();
}
Questo funziona per me.
Forse sono qui troppo tardi per pubblicare una risposta. Quanto segue ha funzionato per me:
var MainImageString = MainImageNode.Attributes.Where(i=> i.Name=="src").FirstOrDefault();
- 1. Impostazioni HTML Agility Pack
- 2. Guida Html Agility Pack
- 3. C# Html Agility Pack (SelectSingleNode)
- 4. Html Agility Pack - Nuovo HtmlAttribute
- 5. Agility Pack HTML, SelectNodes da un nodo
- 6. perché HTML Agility Pack HtmlDocument.DocumentNode è null?
- 7. Posso usare Html Agility Pack per questo?
- 8. Come utilizzare HTML Agility Pack per modificare uno snippet HTML
- 9. Html Agility Pack è ancora il miglior parser .NET HTML?
- 10. Sostituzione di un tag InnerText div con HTML Agility Pack
- 11. HTML Agility Pack: selezionare i nodi dopo il nodo specifico
- 12. HTML Agility pacchetto
- 13. Tag striscia HTML Agility Pack NOT IN whitelist
- 14. HTML Agility Pack ottiene gli attributi href di tutti gli ancore alla pagina
- 15. HTML Agility pacchetto
- 16. Html Agility Pack SelectSingleNode che dà sempre lo stesso risultato in iterazione?
- 17. Dal download di Html Agility Pack, quale dei 9 "HtmlAgilityPack.dll" uso?
- 18. HTML Agility Pack: problema nella selezione di un tag di selezione HTML con i tag di opzione all'interno di
- 19. HTML Agility pacchetto trovare gli ID partendo
- 20. Ottieni collegamenti in classe con il pacchetto agility html
- 21. HTML Agility pacchetto RemoveChild - non comportarsi come previsto
- 22. Estrazione degli URL delle immagini da html in C# utilizzando il pacchetto agility html e scrivendoli in un file xml
- 23. Quando userete decomprimere ('h *' ...) o pack ('h *' ...)?
- 24. Come ottenere un albero in HTML utilizzando puro CSS
- 25. Come ottenere l'attributo lang in HTML utilizzando JavaScript?
- 26. Come ottenere valori html <td> utilizzando javascript?
- 27. come catturare screenshot in html utilizzando js o jQuery
- 28. Come funziona git-receive-pack?
- 29. parse html all'interno CDATA utilizzando jQuery o JavaScript
- 30. Inserire html utilizzando jquery .html()
E, Html Agility Pack può risolvere i percorsi relativi? – iShow