使用 HtmlAgillityPack 如何获取数据和属性 HTML 标签?

Using HtmlAgillityPack how can get data and attributes HTML tags?

在这段 Html 代码中,我需要从 html 标签获取属性和数据。这是一个例子:

...

   <tr class="first-row"><td class="first-cell tl"><a href="../matchdetails.php?matchid=MaxATAKK" onclick="win(this.href, 560, 500, 0, 1); return false;">Gefle - Kalmar</a></td><td class="result"><a href="../matchdetails.php?matchid=MaxATAKK" onclick="win(this.href, 560, 500, 0, 1); return false;">4:2</a></td><td class="odds best-betrate" data-odd="3.53"></td><td class="odds" data-odd="3.37"></td><td class="odds" data-odd="2.04"></td><td class="last-cell nobr date">18.07.2016</td></tr>

...

所以,我需要获取 td 标签和属性之间的数据(数据奇数)。

这是我的 C# 代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HtmlAgilityPack;

namespace bexscraping
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string url = "http://www.betexplorer.com/soccer/sweden/allsvenskan/results/";
            HtmlWeb web = new HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load(url);
            foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//table"))
            {

                //node.Remove();

                outputLabel.Text += node.InnerText;
            }



        }

    }

}

有什么建议吗?谢谢!

这里是一些Msdn例子:XPath Examples; XPath Reference

根据您的代码段,您可以 select 所有包含属性 data-odd 的标签 TD

private void Form1_Load(object sender, EventArgs e)
{

        string url = "http://www.betexplorer.com/soccer/sweden/allsvenskan/results/";
        HtmlWeb web = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = web.Load(url);
        var nodes = doc.DocumentNode.SelectNodes("//td[@data-odd]");
        foreach (HtmlNode node in nodes)
        {
            //Here process your node
            //Example: to get data-odd value
            var val = node.GetAttributeValue("data-odd", "");
        }
}