Html Agility Pack получает определенный контент из тега <li> - PullRequest
0 голосов
/ 05 октября 2018

Мне нужен текст с этого сайта https://www.amazon.com/dp/B074J9SSPD,, чтобы быть конкретным, мне нужно извлечь данные в разделе «О продукте».

enter image description here

Я пытался

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = new HtmlDocument();
doc = web.Load("https://amazon.com/dp/B074J9SSPD");

foreach(var node in doc.DocumentNode.SelectNodes("//li[@class='showHiddenFeatureBullets']") {
  string ar = node.InnerText;
  HtmlAttribute att = node.Attributes["class"];
  MessageBox.Show(ar.ToString());
  if (att.Value.Contains("showHiddenFeatureBulletsway,

  }
}

Пожалуйста, предложите правильный путь, я получаю пустую строку.

1 Ответ

0 голосов
/ 10 октября 2018

Ваш исходный код (до этого первого редактирования) работал для меня, в нем просто отсутствовали правильные скобки в цикле foreach.Я также разбил узлы на их собственные переменные, чтобы их было легче читать, но это должно сработать для вас.Я тестировал его локально, и он работал для меня.

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = new HtmlDocument();
doc = web.Load("https://amazon.com/dp/B074J9SSPD");

var aboutProductNodes = doc.DocumentNode.SelectNodes("//li[@class='showHiddenFeatureBullets']");

foreach (var node in aboutProductNodes)
{
    string ar = node.InnerText;
    HtmlAttribute att = node.Attributes["class"];
    MessageBox.Show(ar.ToString().Trim());
    if (att.Value.Contains("showHiddenFeatureBullets"))
    {

    }
}

Однако я бы посоветовал изучить API Amazon.Это работало примерно половину времени, а затем другая половина была Amazon, отвечая, чтобы использовать их API, а не веб-очистить их.Так что это тоже могло быть частью вашей проблемы.

https://developer.amazon.com/services-and-apis

...