Extraire les liens d'une page web en 4 lignes de code

Petit exemple d'utilisation des expressions régulieres pour extraire les liens d'une page web. Le principe c'est de trouver toutes les séquence <a href=....>...</a>.
L'intéret de l'exemple (qui inclut aussi le téléchargement de la page) c'est de montrer l'utilisation des expressions de remplacement nommées pour extraire des parties de la séquence trouvée (ici l'url et le texte du lien).

private string ExtractLinksInWebPage(string uri)

{

  StringBuilder results = new StringBuilder();

  WebClient client = new WebClient();

  string pageText = client.DownloadString(uri);

  Regex re = new Regex("\\[^\"']*)[\"'].*\\>(?.*)\\", RegexOptions.IgnoreCase);

  MatchCollection matches = re.Matches(pageText);

  foreach (Match match in matches)

    results.AppendLine(match.Groups["url"].Value + " => " + match.Groups["text"].Value);

  return results.ToString();

}

Exemple avec ce blog:

http://blog.expert-aspnet.fr/ => Quelques trucs que je connais en ASP.Net

#main => Aller au contenu

#blognav => Aller au menu

#search => Aller A la recherche

http://blog.expert-aspnet.fr/category/Visual-Studio => Visual Studio

http://blog.expert-aspnet.fr/tag/regexp => regexp

http://blog.expert-aspnet.fr/post/regexp-extraction-liens-page-web.html#comments => aucun commentaire

http://blog.expert-aspnet.fr/post/regexp-extraction-liens-page-web.html#pings => aucun rA©trolien

http://blog.expert-aspnet.fr/category/Les-bases => Les bases

http://blog.expert-aspnet.fr/post/expressions_resources_globales_markup_aspx.html#comments => aucun commentaire

...

http://blog.expert-aspnet.fr/tags => Tous les tags

http://www.clt-services.com => CLT-Services

http://blog.expert-sql.fr => Blog SQL Server

http://blog.expert-aspnet.fr/archive => Archives/legalnotice => Informations lA©gales

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Related posts

Add comment


(Will show your Gravatar icon)  

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

November 21. 2008 14:24