Парсинг с помощью 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");
                }
            }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы