使用 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", "");
}
}
在这段 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", "");
}
}