obtener datos de la página html con windows phone c #

c# html-agility-pack windows-phone

Pregunta

Tengo esta página: www.unnu.com/music-artists

Necesito recuperar esta lista completa de todos los artistas y sus enlaces.

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.
                    }
                }
            }

Por favor, necesito esto con urgencia ya que es un trabajo. Si necesitas mi skype es gnrmalazagnr puedes agregar.

Respuesta aceptada

No estoy seguro de lo que quieres hacer aquí, pero si solo quieres descargar y leer el archivo html. necesita 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; }


Respuesta popular

Resuelvo el problema gracias:

void web_DownloadStringCompleted (objeto remitente, 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;

            }
        }


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow