首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AngleSharp解析表中的数据?

使用AngleSharp解析表中的数据?
EN

Stack Overflow用户
提问于 2019-06-21 06:29:30
回答 1查看 2.5K关注 0票数 0

需要解析网站播放音乐,并从播放列表中获取歌曲数据

具有此表(ru版本):

代码语言:javascript
复制
<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>

例如,这里-歌曲的名称

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

我怎样才能获得数据,比如歌曲的名字、艺术家等等?

EN

回答 1

Stack Overflow用户

发布于 2019-06-22 18:07:13

AngleSharp自述文件中有一个非常类似的示例(请参阅https://github.com/AngleSharp/AngleSharp.Samples/blob/master/AngleSharp.Samples.Demos/Snippets/BigBang.cs):

代码语言:javascript
复制
// 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相关的方法,我假设你很确定它们会工作……因此,为了简单起见,我将省略它们。

现在,在您的情况下,这可能会转换为:

代码语言:javascript
复制
var rows = document.QuerySelectorAll("tr.song-row");
var songInfos = rows.Select(row => new {
    Title = row.QuerySelector(".column-content.tooltip")?.TextContent,
});

注意:您带来的歌曲标题示例似乎非常通用;我没有看到任何与歌曲标题相关的内容。因此,我假设您需要从给定行中选择一个特定的列(例如,第5列)。在上面的示例中,我只使用了您所显示的元素的选择器。

哈!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56694644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档