如何使用HTMLAgilityPack从此站点提取数据?

时间:2019-11-06 22:06:38

标签: c# web-scraping html-agility-pack

我一直在关注如何使用HTMLAgilityPack抓取信息的教程,这是一个示例:

using System;
using System.Linq;
using System.Net;

namespace web_scraping_test
{
    class Program
    {
        static void Main(string[] args)
        {
            HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.yellowpages.com/search?search_terms=Software&geo_location_terms=Sydney2C+ND");
            var names = doc.DocumentNode.SelectNodes("//a[@class='business-name']").ToList();
            foreach (var item in names)
            {
                Console.WriteLine(item.InnerText);
            }
        }
    }
}

这很容易获得数据,因为有一个通用的类名,并且很容易获得

我正在尝试使用它来从此网站https://osu.ppy.sh/beatmapsets/354163#osu/780200

抓取信息

但是我不知道正确的标记以获得“针迹” 肖恩·门德斯(Shawn Mendes)和此图中给出的值:Diagram

对于“ Shawn Mendes”,标记为'<a class="beatmapset-header__details-text beatmapset-header__details-text--artist" href="https://osu.ppy.sh/beatmapsets?q=Shawn%20Mendes">Shawn Mendes</a>' 但是我不确定如何在代码中实现这一点。我已经替换了URL并更改了类名,但是此文本的目录在此站点上似乎复杂得多。任何建议将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:-1)

您要查找的所有详细信息似乎都在标记中的JSON对象中。有一个ID为“ json-beatmapset”的脚本块,如果您将其内容抓取并解析其中包含的JSON,则此后应该会顺利进行。