HTML Agility Pack从<li>标记获取特定内容

时间:2018-10-05 17:53:35

标签: c# html-agility-pack

我需要从该网站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 :(得分:1)

您的原始代码(在第一次编辑之前)为我工作,只是缺少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"))
    {

    }
}

但是我建议您研究一下Amazon API。它工作了大约一半的时间,然后另一半是亚马逊答复使用他们的api而不是通过网络抓取它们。所以这也可能是您的问题的一部分。

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