c# - 如何使用 html agility pack 解析一个简单的页面?

标签 c# .net parsing html-agility-pack

我正在尝试解析这个 page ,但我没有太多独特的信息来唯一标识我想要的部分。

基本上,我正在尝试获取 Flash 视频的大部分数据。所以:

Alternating Floor Press

Type: Strength
Main Muscle Worked: Chest 
Other Muscles: Abdominals, Shoulders, Triceps 
Equipment: Kettlebells 
Mechanics Type: Compound
Level: Beginner
Sport: No
Force: N/A

还有显示前后状态的图像链接。

现在我用这个:

HtmlAgilityPack.HtmlDocument doc = web.Load ( "http://www.bodybuilding.com/exercises/detail/view/name/alternating-floor-press" );
IEnumerable<HtmlNode> threadLinks = doc.DocumentNode.Descendants ( "a" );

foreach ( var link in threadLinks )
{
    string str = link.InnerHtml;
    Console.WriteLine ( str );
}

这给了我很多我不需要的东西,但也打印了我需要的东西。我是否应该通过尝试查看我的目标数据可能在其中的位置来解析此打印数据?

最佳答案

您可以选择您感兴趣的节点的id:

        HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.bodybuilding.com/exercises/detail/view/name/alternating-floor-press");
        IEnumerable<HtmlNode> threadLinks = doc.DocumentNode.SelectNodes("//*[@id=\"exerciseDetails\"]");

        foreach (var link in threadLinks)
        {
            string str = link.InnerText;
            Console.WriteLine(str);
        }
        Console.ReadKey();

关于c# - 如何使用 html agility pack 解析一个简单的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717801/

相关文章:

.net - 当参数没有这些约束时,如何调用具有类型约束的泛型方法?

c++ - lex/yacc没有成员名称和声明错误

java - 为简单的伪代码语言创建解析器?

c# - 为什么我可以将不兼容的 lambda 分配给 Action?

.net - 删除现有 pdf 上的印记

c# - 在 ASP.NET Core MVC 中将表单发布到 Controller 不起作用

.net - 如何在 xunit2 中捕获 log4net 输出

C++ FSM 设计和所有权

c# - 是否可以创建无论电池状态如何都保持事件状态的 UWP 服务?

c# - 在 C# 中解析不断更新的 HTML