obtenir des données de la page HTML avec Windows Phone C #

c# html-agility-pack windows-phone

Question

J'ai cette page: www.unnu.com/music-artists

besoin de récupérer cette liste complète de tous les artistes et leurs liens.

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

            // There are various options, set as needed
            htmlDoc.OptionFixNestedTags = true;

            // filePath is a path to a file containing the html
            htmlDoc.Load("http://www.unnu.com/music-artists");

            // Use:  htmlDoc.LoadHtml(xmlString);  to load from a string (was htmlDoc.LoadXML(xmlString)

            // ParseErrors is an ArrayList containing any errors from the Load statement
            if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
            {
                // Handle any parse errors as required

            }
            else
            {

                if (htmlDoc.DocumentNode != null)
                {
                    HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//a");

                    if (bodyNode != null)
                    {
                        listBox1 = ????//this is not working, do not know if the code is correct and just missing here or is this all wrong.
                    }
                }
            }

S'il vous plaît, j'ai besoin de cela avec urgence car c'est un travail. Si vous avez besoin de mon skype est gnrmalazagnr peut ajouter.

Réponse acceptée

Je ne suis pas sûr de ce que vous voulez faire ici, mais si vous voulez simplement télécharger et lire le fichier html. vous avez besoin de WebClient web = new WebClient(); web.DownloadStringAsync(new Uri("www.unnu.com/music-artists")); web.DownloadStringCompleted += web_DownloadStringCompleted;

void web_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { string HtmlPage = e.Result; }


Réponse populaire

Je résous le problème merci:

void web_DownloadStringCompleted (expéditeur de l'objet, DownloadStringCompletedEventArgs e) {

            if (!e.Cancelled && e.Error == null && !String.IsNullOrEmpty(e.Result))
            {
                _artistas = new List<Artista>();
                // Aqui você pega todos os links da página
                // P.S.: Se a página mudar, você tem que alterar o pattern aqui.
                string pattern = @"\<a\shref\=[\""|\'](?<url>[^\""|\']+)[\""|\']\stitle\=[\""|\'](?<title>[^\""|\']+)[\""|\']\>(?<author>[^\<]+)\<\/a\>";
                // Busca no HTML todos os links
                MatchCollection ms = Regex.Matches(e.Result, pattern, RegexOptions.Multiline);

                Debug.WriteLine("----- OK {0} links encontrados", ms.Count);

                foreach (Match m in ms)
                {
                    // O pattern acima está dizendo onde fica o Url e onde fica o nome do artista
                    // e esses são resgatados aqui
                    Group url = m.Groups["url"];
                    Group author = m.Groups["author"];

                    if (url != null && author != null)
                    {
                        //Debug.WriteLine("author: {0}\nUrl: {1}", author.Value, url.Value);

                        // Se caso tenha encontrado o link do artista (pois há outros links na página) continua
                        if(url.Value.ToLower().IndexOf("/artist/") > -1)
                        {
                            // Adiciona um objeto Artista à lista
                            Artista artista = new Artista(author.Value, url.Value);
                            _artistas.Add(artista);
                        }
                    }
                }

                listBox1.ItemsSource = _artistas;

            }
        }



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi