Как получить все элементы заголовка из HTML? HTMLAgilityPack, C # - PullRequest
0 голосов
/ 26 июня 2019

Работа с парсером музыкального сайта. Нужно больше информации о песнях, в плейлисте. После промахов с AngleSharp я использую HTMLAgilityPack. Итак, название песни расположено, например:

        <div class="datagrid-cell cell-artist">
<div class="ellipsis"><a class="datagrid-label datagrid-label-main" itemprop="byArtist" title="Drake" href="/ru/artist/246791">Drake</a></div></div>

Но с моим кодом я не могу получить нужный мне атрибут. Код (используйте введите описание ссылки здесь ):

 class Program
{
    static async Task Main(string[] args)
    {

        HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        var client = new HttpClient();
        string html = await client.GetStringAsync("https://www.deezer.com/ru/playlist/2872124702");
        document.LoadHtml(html);
        if (document.DocumentNode != null)
        {

            foreach (HtmlNode node in document.DocumentNode.Descendants("div").Where(d =>
            d.Attributes.Contains("class") && d.Attributes["title"].Value.Contains("ellipsis")))
            {
                string title = node.SelectSingleNode(".//a").Attributes["title"].Value; //I think - need InnerText
                Console.WriteLine(title);
            }

Помогите, пожалуйста, я понятия не имею, как это сделать. Удачи!

1 Ответ

0 голосов
/ 26 июня 2019

Мое предложение в комментарии, кажется, работает, см. Рабочую версию здесь: https://dotnetfiddle.net/h8OrbG

    using System;

public class Program
{
    public static void Main()
    {
        var doc = new HtmlAgilityPack.HtmlDocument();
        var html = "<div class='datagrid-cell cell-artist'><div class='ellipsis'><a class='datagrid-label datagrid-label-main' itemprop='byArtist' title='Drake' href='/ru/artist/246791'>Drake</a></div></div>";
        doc.DocumentNode.AppendChild(HtmlAgilityPack.HtmlNode.CreateNode(html));
        foreach (var node in doc.DocumentNode.SelectNodes("//a[@itemprop='byArtist']"))
        {
            Console.WriteLine(node.Attributes["title"].Value);
        }
    }
}
...