我需要从该网站https://www.amazon.com/dp/B074J9SSPD中获取一些文本,具体来说,我需要在“关于产品”部分下提取数据。
我尝试了
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,
}
}
请提出正确的方法,我得到的是空字符串。
答案 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而不是通过网络抓取它们。所以这也可能是您的问题的一部分。