Разбор данных из таблицы (HTML) с помощью AngleSharp? - PullRequest
0 голосов
/ 21 июня 2019

Необходимо проанализировать музыку на сайте и взять данные песни из списка воспроизведения

Имея эту таблицу (ru версия):

<tr class="song-row " data-id="ef713e30-ea6c-377d-a1a6-bc55ef61169c" data-song-type="7" data-subscription-links="true" data-index="0"><td data-col="index"><span class="column-content">1<button aria-label="Воспроизвести: HUMBLE." data-id="play" class="aria-play-button"></button></span></td><td data-col="title"><div class="title-right-items"><iron-icon icon="av:explicit" role="img" aria-label="Не предназначено для детей" title="Не предназначено для детей" class="x-scope iron-icon-0"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope iron-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;"><g class="style-scope iron-icon"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 6h-4v2h4v2h-4v2h4v2H9V7h6v2z" class="style-scope iron-icon"></path></g></svg>

Вот, например -название песни

<span class="column-content tooltip"><img src="https://lh3.googleusercontent.com/UVqWaml2fkVCgsErJIZBLeSn6LlOCI1t_W68-1HABS8dos9fWNn-4cGkboaKf-5Ro_YhthMx=s60-e100-c" alt="">HUMBLE.</span>

Как я могу получить данные, такие как название песни, исполнителя и т. д.?

1 Ответ

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

AngleSharp README получил довольно похожий пример (см. https://github.com/AngleSharp/AngleSharp.Samples/blob/master/AngleSharp.Samples.Demos/Snippets/BigBang.cs):

// Setup the configuration to support document loading
var config = Configuration.Default.WithDefaultLoader();
// Load the names of all The Big Bang Theory episodes from Wikipedia
var address = "http://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
// Asynchronously get the document
var document = await BrowsingContext.New(config).OpenAsync(address);
// This CSS selector gets the desired content
var cellSelector = "tr.vevent td:nth-child(3)";
// Perform the query to get all cells with the content
var cells = document.QuerySelectorAll(cellSelector);
// We are only interested in the text - select it with LINQ
var titles = cells.Select(m => m.TextContent);

Так как вы не опубликовали свою конфигурацию / методы, связанные с AngleSharp, я предполагаю, что вы все равно уверены, что они работают ... Так чтоЯ опущу их для простоты.

Теперь в вашем случае это может привести к:

var rows = document.QuerySelectorAll("tr.song-row");
var songInfos = rows.Select(row => new {
    Title = row.QuerySelector(".column-content.tooltip")?.TextContent,
});

Примечание. Приведенный вами пример названия песни кажется очень общим; я ничего не вижусвязанные с названием песни. Поэтому я предполагаю, что вам нужно будет выбрать конкретный столбец (например, 5-й столбец) из данной строки. В приведенном выше примере я просто использовал селектор для показанного вами элемента.

НТН!

...