obtenir tous les liens d'une page web
-
mercredi 1 août 2012 09:35
Bonjour
Je cherche à obtenir tous les liens d'une page web
HtmlElementCollection Liens = webBrowser1.Document.Links;
ne marche pas, car en éditant les élements de la collection, j'obtiens l'adresse de la page web, et non pas des liens qu'elle contient.
Toutes les réponses
-
mercredi 1 août 2012 11:18Modérateur
Bonjour,
Cela me semble pourtant correct et la doc dit bien cela liste les liens notamment créés par A en HTML (cf http://msdn.microsoft.com/fr-fr/library/system.windows.forms.htmldocument.links.aspx).
Vous faites un foreach et faites un GetAttribute pour récupérer le href de chaque élément récupéré ?
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Modifié Patrice ScribeMVP, Moderator mercredi 1 août 2012 11:20
-
mercredi 1 août 2012 14:42Une solution consiste à utiliser le HtmlAgility Pack (http://htmlagilitypack.codeplex.com/) : il converti votre Html en Xml, il ne reste plus ensuite qu'à faire un XPath sur le Xml récupéré.
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone -
mercredi 1 août 2012 19:45
Je ne vois pas à quoi sert le GetAttribute, voilà mon code, rtb2 est un richTextBox.private void liensToolStripMenuItem_Click(object sender, EventArgs e) { if (webBrowser1.Document != null) { HtmlElementCollection Liens = webBrowser1.Document.Links; foreach (HtmlElement lien in Liens) { f2.rtb2.AppendText(webBrowser1.Url.ToString()+lien.InnerText+Environment.NewLine); } } -
mercredi 1 août 2012 20:04HtmlAgility Pack trop compliqué pour moi,dommage!
-
mercredi 1 août 2012 22:40Modérateur
Bonjour,
Voilà le code qu'il faut utiliser :
foreach (HtmlElement lien in Liens) { f2.rtb2.AppendText(lien.GetAttribute("href") + lien.InnerText + Environment.NewLine); }Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0- Proposé comme réponse Patrice ScribeMVP, Moderator jeudi 2 août 2012 08:01
- Marqué comme réponse soleilnoir jeudi 2 août 2012 08:02
-
jeudi 2 août 2012 08:03Modérateur
En complément de la réponse de Gilles :
- webBrowser1.Url.ToString() récupère l'url de la page et non pas des liens que l'on est train de parcourir d'où le problème
- lien.GetAttribute("href") récupère l'attribut href du lien que l'on est train de parcourir et donne donc l'info que l'on voulaitPlease always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Marqué comme réponse Florin CiucaMicrosoft Contingent Staff, Moderator mardi 21 août 2012 10:34
-
vendredi 3 août 2012 09:15
Je ne saisis pas trés bien la différence entre "lien" et "attribut du lien"
Existe-t-il un tutoriel, trés simple, qui explique ce que sont les attributs?
Merci.
-
vendredi 3 août 2012 09:38Modérateur
Un attribut est juste l'une des "propriétés" d'une balise HTML qui sont exprimées sous la forme nom=valeur.
Ici, la variable lien est un objet qui représente l'ensemble de la balise que l'on a donc dans le document html par qq chose comme :
<a href="http://unsite">Du texte</a>lien.GetAttribute("href") permet de récupérer la valeur de la propriété "href" (que l'on appelle attribut) donc http://unsite. On peut avoir d'autre attributs :
http://fr.selfhtml.org/html/reference/attributs.htm#a
lien.InnerText permet de récupérer le texte présent à l'intérieur de la base (entre <a> et </a>).
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Marqué comme réponse soleilnoir vendredi 3 août 2012 10:46
-
vendredi 3 août 2012 10:46Merci

