Проблема с парсингом данных используя Html Agility Pack
Совсем новичок c#, написал код для парсинга курса доллара исходя данных некоторых банков. Проблема заключается в том что, теперь при вводе любого сайта и указании xPath к нужным мне элементам, они все время возвращают null. При чем это происходит только в методе webSNB, и какой бы сайт и xPath я туда не вставил, ничего не меняется. Пробовал переписывать метод, менять местами, но если поменять местами courseSNB и coursePSB, SNB возьмет его данные. Совсем запутался уже
namespace Kursach
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
HtmlWeb web = new HtmlWeb();
HtmlWeb webPSB = new HtmlWeb();
HtmlWeb webSNB= new HtmlWeb();
public event PropertyChangedEventHandler PropertyChanged;
public MainWindow()
{
InitializeComponent();
DataContext = this;
courseForex();
courseCB();
coursePSB();
courseSNB();
}
string dollarRateBuy = "0";
string dollarRateSell = "0";
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public string dollarRBuy
{
get { return dollarRateBuy; }
set
{
dollarRateBuy = value;
OnPropertyChanged(nameof(dollarRBuy));
}
}
public string dollarRSell
{
get { return dollarRateSell; }
set
{
dollarRateSell = value;
OnPropertyChanged(nameof(dollarRSell));
}
}
void courseForex()
{
web.UsingCache = false;
HtmlDocument doc = web.Load("https://www.profinance.ru/currency_usd.asp");
HtmlNode dollarRateNodeBuy = doc.DocumentNode.SelectSingleNode("//table[1]//tr[2]//td//table//tr[2]//td[3]//table[2]//tr//td//table//tr[3]//td//table//tr[4]//td[1]//font[1]//b/text()\r\n");
if (dollarRateNodeBuy != null)
{
dollarRateBuy = dollarRateNodeBuy.InnerText;
dollarRBuy1.Content = $"{dollarRateNodeBuy.InnerText}";
}
else
{
dollarRateBuy = "Нет данных";
}
HtmlNode dollarRateNodeSell = doc.DocumentNode.SelectSingleNode("//table[1]//tr[2]//td//table//tr[2]//td[3]//table[2]//tr//td//table//tr[3]//td//table//tr[4]//td[1]//font[2]//b/text()\r\n");
if (dollarRateNodeSell != null)
{
dollarRateSell = dollarRateNodeSell.InnerText;
dollarRSell1.Content = $"{dollarRateNodeSell.InnerText}";
}
else
{
dollarRateSell = "Нет данных";
}
}
void courseCB()
{
web.UsingCache = false;
HtmlDocument doc = web.Load("https://www.profinance.ru/currency_usd.asp");
HtmlNode dollarRateNodeBuy = doc.DocumentNode.SelectSingleNode("//table[1]//tr[2]//td//table//tr[2]//td[3]//table[2]//tr//td//table//tr[3]//td//table//tr[2]//td[1]//b//font\r\n");
if (dollarRateNodeBuy != null)
{
dollarRateBuy = dollarRateNodeBuy.InnerText;
dollarCBBuy.Content = $"{dollarRateNodeBuy.InnerText}";
}
else
{
dollarRateBuy = "Нет данных";
}
HtmlNode dollarRateNodeSell = doc.DocumentNode.SelectSingleNode("//table[1]//tr[2]//td//table//tr[2]//td[3]//table[2]//tr//td//table//tr[3]//td//table//tr[2]//td[2]//b//font\r\n");
if (dollarRateNodeSell != null)
{
dollarRateSell = dollarRateNodeSell.InnerText;
dollarCBSell.Content = $"{dollarRateNodeSell.InnerText}";
}
else
{
dollarRateSell = "Нет данных";
}
}
void coursePSB()
{
webPSB.UsingCache = false;
HtmlDocument docPSB = webPSB.Load("https://pskb.com/currency/");
HtmlNode dollarRateNodeBuy = docPSB.DocumentNode.SelectSingleNode("//*[@id=\"offline\"]/table/tbody/tr[1]/td[3]");
if (dollarRateNodeBuy != null)
{
dollarRateBuy = dollarRateNodeBuy.InnerText;
dollarPSBBuy.Content = $"{dollarRateNodeBuy.InnerText}";
}
else
{
dollarRateBuy = "Нет данных";
}
HtmlNode dollarRateNodeSell = docPSB.DocumentNode.SelectSingleNode("//*[@id=\"offline\"]/table/tbody/tr[1]/td[2]");
if (dollarRateNodeSell != null)
{
dollarRateSell = dollarRateNodeSell.InnerText;
dollarPSBSell.Content = $"{dollarRateNodeSell.InnerText}";
}
else
{
dollarRateSell = "Нет данных";
}
}
void courseSNB()
{
webSNB.UsingCache = false;
HtmlDocument docSNB = webSNB.Load("https://www.sevnb.ru");
HtmlNode dollarRateNodeBuy = docSNB.DocumentNode.SelectSingleNode("/html/body/div[3]/div[4]/div[1]/div/div/div[1]/table/tbody/tr[5]/td[2]/span");
if (dollarRateNodeBuy != null)
{
dollarRateBuy = dollarRateNodeBuy.InnerText;
dollarSNBBuy.Content = $"{dollarRateNodeBuy.InnerText}";
}
else
{
dollarRateBuy = "Нет данных";
}
HtmlNode dollarRateNodeSell = docSNB.DocumentNode.SelectSingleNode("/html/body/div[3]/div[4]/div[1]/div/div/div[1]/table/tbody/tr[5]/td[3]/span");
if (dollarRateNodeSell != null)
{
dollarRateSell = dollarRateNodeSell.InnerText;
dollarSNBSell.Content = $"{dollarRateNodeSell.InnerText}";
}
else
{
dollarRateSell = "Нет данных";
}
}
private void ButtonUpdate_Click(object sender, RoutedEventArgs e)
{
courseForex();
courseCB();
coursePSB();
courseSNB();
}
}
}