亲爱的朋友们,我想从摘自amazon.cn的代码段中提取文本平均3.6 星
。
<div class="content"><ul>
<li><b>用户评分:</b>
<span class="crAvgStars" style="white-space:no-wrap;">
<span class="asinReviewsSummary" ref="dp_db_cm_cr_acr_pop_" name="B004GUSIKO">
<a>
<span class="swSprite s_star_3_5 " title="平均3.6 星">
<span>平均3.6 星</span>
</span>
</a>
我的问题是span类标记值"s_star_3_5 "
因客户的评级等级而异,并动态附加。所以我尝试使用doc.DocumentNode.SelectSingleNode(" //span[@class='swSprite']").InnerText
或//span[@class='swSprite s_star_3_5 ']
,但结果是错误或不是我想要的!
有什么建议吗?
答案 0 :(得分:2)
首先,我建议您将doc.DocumentNode.OuterHtml
的值保存到本地.html
文件,并查看您获取的代码是否为该代码。问题是,有时您开始使用HtmlAgilityPack解析网站,但第一个问题是您没有正确获取有效的HTML。也许你得到404错误,或重定向等等。
我建议这样做是因为我测试了//span[@class='swSprite s_star_3_5 ']
并且工作正常。
这是以下问题中的问题:
如果这没有帮助,请发布HTML代码,我会帮助您;)
答案 1 :(得分:1)
这对我有用:
HtmlDocument doc = new HtmlDocument();
doc.Load(myHtml);
HtmlNode node = doc.DocumentNode.SelectSingleNode("//span[starts-with(@class, 'swSprite')]");
Console.WriteLine("Text=" + node.InnerText.Trim());
和输出
平均3.6 星
注意我使用XPATH starts-with function。