Comment HtmlAgilityPack extrait-il le texte du noeud html auquel l'attribut de classe a été ajouté dynamiquement?

html-agility-pack

Question

Chers amis, Je souhaite extraire le texte å¹³å ‡3.6 星 de ce segment de code extrait d’amazon.cn.

<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>

Ma question est que la valeur de balise de classe span "s_star_3_5 " varie selon le niveau d’évaluation du client et est ajoutée dynamiquement. Donc, doc.DocumentNode.SelectSingleNode(" //span[@class='swSprite']").InnerText utiliser doc.DocumentNode.SelectSingleNode(" //span[@class='swSprite']").InnerText ou //span[@class='swSprite s_star_3_5 '] , mais le résultat est une erreur ou quoi mon besoin!

Aucune suggestion?

Réponse acceptée

Tout d'abord, je vous suggère d'enregistrer la valeur de doc.DocumentNode.OuterHtml dans un fichier .html local et de voir si le code que vous obtenez est ce code. Le problème est que, parfois, vous commencez à analyser un site Web à l'aide de HtmlAgilityPack, mais le tout premier problème est que vous n'obtenez pas correctement le code HTML valide. Vous obtenez peut-être une erreur 404, ou une redirection, etc.

Je suggère cela parce que j'ai testé //span[@class='swSprite s_star_3_5 '] et que j'ai correctement fonctionné.

C'était le problème dans les questions suivantes:

Si cela ne vous aide pas, postez le code HTML et je vous aiderai;)


Réponse populaire

Cela fonctionne pour moi:

HtmlDocument doc = new HtmlDocument();
doc.Load(myHtml);
HtmlNode node = doc.DocumentNode.SelectSingleNode("//span[starts-with(@class, 'swSprite')]");
Console.WriteLine("Text=" + node.InnerText.Trim());

et sorties

平均3.6 星

Remarque J'utilise la fonction XPATH starts-with .



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi