Как вытянуть значение из парсера на c#?

как вытянуть значение из парсера на c#. собственно есть парсер и мне надо вытянуть значение в отдельную переменную. Сам парсер собирает значение курса доллара с сайта banki.ru
но как это сделать я не знаю

вот код

Episode.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ScrapingDollarRate
{
    public class Episode
    {
        public string OverallNumber { get; set; }
        public string Title { get; set; }
        //public string Directors { get; set; }
        //public string WrittenBy { get; set; }
        //public string Released { get; set; }
    }
}


main.cs

using System;
using HtmlAgilityPack;
using CsvHelper;
using System.Globalization;


namespace ScrapingDollarRate
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://www.banki.ru/products/currency/usd/";

            var web = new HtmlWeb();
            var document = web.Load(url);
            var nodes = document.DocumentNode.SelectNodes("//div[contains(@class, 'Flexbox__sc-wtbhrg-0 fEdnEg')]");

            List<Episode> episodes = new List<Episode>();


            if (nodes == null)
            {
                Console.WriteLine("Null");
            }
            else
            {
                foreach (var node in nodes)
                {
                    episodes.Add(new Episode()
                    {
                        OverallNumber = HtmlEntity.DeEntitize(node.SelectSingleNode("//div[contains(@class, 'Text__sc-j452t5-0 hDxmZl')]").InnerText),
                        Title = HtmlEntity.DeEntitize(node.SelectSingleNode("//div[contains(@class, 'Text__sc-j452t5-0 bCCQWi')]").InnerText)
// Мне надо чтобы значение этого Title можно было поместить в условную var x и отправить дальше по коду 
                    });
                }

                using (var writer = new StreamWriter("output.csv"))
                using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
                {
                    csv.WriteRecords(episodes);
                }
            }
        }
    }
}
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
после просмотра output.csv
догадка пришла сразу.. осваивайте отладчик ;)))
qWkFWKR.png


ps как вариант
1
public class Episode
{
    public string Title { get; set; }
    public string OverallNumber { get; set; }
 }

2
episodes.Add(new Episode()
{
    Title = HtmlEntity.DeEntitize(node.SelectSingleNode("//div[contains(@class, 'Text__sc-j452t5-0 hDxmZl')]").InnerText),
    OverallNumber = HtmlEntity.DeEntitize(node.SelectSingleNode("//div[contains(@class, 'Text__sc-j452t5-0 bCCQWi')]").InnerText)
// тут внимательно! я меняю местами переменные, полагая что токов их смысл. но не запросы! )))
});

3
Title,OverallNumber
Обновление: 10.02.2024 10:05,"90,89 ₽"
Обновление: 10.02.2024 10:05,"90,89 ₽"
Обновление: 10.02.2024 10:05,"90,89 ₽"
.. или уточняйте вопрос? ))

pps а еще нюансики с культурой, чаще разделитель в csv это ";" тогда тот же excel открывает как таблицу сразу... а у вас "," .. это видно по заголовку сразу ))
как вам надо - решайте сами ))
у меня на ура прошло так ))
var csv = new CsvWriter(writer, CultureInfo.CurrentCulture)
// если у тебя региональные настройки не РФ, все равно так выдаст именно под дефолт твоих настроек


ppps
Мне надо чтобы значение этого Title можно было поместить в условную var x и отправить дальше по коду
а зачем? ну или в чем трудности? Console.WriteLine(episodes[0].Title); ;)))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы