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

时间:2016-07-20 09:49:52

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

在这个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;
            }



        }

    }

}

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

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

根据您的代码段,您可以选择包含属性数据奇数的所有标记 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", "");
        }
}