HtmlAgilityPack如何從動態附加類屬性的html節點中提取文本

html-agility-pack

親愛的朋友們,我想從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 '] doc.DocumentNode.SelectSingleNode(" //span[@class='swSprite']").InnerText//span[@class='swSprite s_star_3_5 '] ,但結果是錯誤或不是什麼我想要的!

有什麼建議麼?

一般承認的答案

首先,我建議您將doc.DocumentNode.OuterHtml的值doc.DocumentNode.OuterHtml到本地.html文件中,看看您獲取的代碼是否是該代碼。問題是,有時您開始使用HtmlAgilityPack解析網站,但第一個問題是您沒有正確獲取有效的HTML。也許你得到404錯誤,或重定向等。

我建議這是因為我測試了//span[@class='swSprite s_star_3_5 ']並正常工作。

這是以下問題中的問題:

如果這沒有幫助,發布HTML代碼,我會幫助你;)


熱門答案

這對我有用:

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 啟動功能



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow