Парсинг с помощью HtmlAgilityPack - C#
Формулировка задачи:
Здравствуйте. Нужно спарсить со страницы два числа, которые стоят между тегов <span id="first_id">*первое число*<font> и <span id="second_id">*второе число*<font> и поместить их в две переменные (без разницы, string или int). Предпочтительней будет сделать это с помощью HtmlAgilityPack, но можно и по-другому. Ниже часть кода страницы.
Спасибо.
<body>
....
<div class="class1">
<div class="class2">
<p>You have <span id="first_id">142 <font>points</font></span></p>
<p>She has<span id="second_id">2324 <font>points</font></span></p>
</div>
<div id="div_id">
<div style="padding: 40px 0 0 55px; font-size: 12px; text-align:center;">
<strong>Your Flash Player plugin is outdated.</strong><br />
Click <a href="/?detectflash=false">here</a>, to download the latest Adobe Flash Player plugin.
</div>
</div>
</div>
...
</body>
Решение задачи: «Парсинг с помощью HtmlAgilityPack»
textual
Листинг программы
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;
using HtmlDocument = HtmlAgilityPack.HtmlDocument;
using System.IO;
namespace WinFormPars
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
try
{
example();
}
catch (Exception)
{
throw;
}
}
void example()
{
string sURL;
sURL = "http://www.yandex.ru";
HtmlDocument doc = new HtmlDocument();
var web = new HtmlWeb
{
AutoDetectEncoding = false,
OverrideEncoding = Encoding.UTF8,
};
HtmlNodeCollection hnNode = doc.DocumentNode.SelectNodes("//table[@class='" + "b-stocks-i b-stocks-i-currency" + "']");
if (hnNode != null)
{
foreach (var hn in hnNode)
{
string outputText = hn.OuterHtml;
webBrowser1.DocumentText = outputText;
richTextBox1.AppendText(outputText);
}
}
else
{
MessageBox.Show("hnNode вернула null");
}
}
}
}