Come HtmlAgilityPack estrae il testo dal nodo html il cui attributo di classe viene aggiunto dinamicamente

html-agility-pack

Domanda

Cari amici, voglio estrarre il testo å¹³å ‡3.6 星 da questo segmento di codice tratto da 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>

La mia domanda è che il valore del tag di classe "s_star_3_5 " varia a seconda del livello di valutazione del cliente e viene aggiunto dinamicamente. Quindi cerco di utilizzare doc.DocumentNode.SelectSingleNode(" //span[@class='swSprite']").InnerText o //span[@class='swSprite s_star_3_5 '] , ma il risultato è un errore o meno mia voglia!

Eventuali suggerimenti?

Risposta accettata

Prima di tutto, ti suggerisco di salvare il valore di doc.DocumentNode.OuterHtml in un file .html locale e vedere se il codice che stai ottenendo è quel codice. Il fatto è che a volte si inizia l'analisi di un sito Web utilizzando HtmlAgilityPack, ma il primo problema è che non si ottiene correttamente l'HTML valido. Forse stai ricevendo un errore 404, o un reindirizzamento, ecc.

Sto suggerendo questo perché ho provato //span[@class='swSprite s_star_3_5 '] e //span[@class='swSprite s_star_3_5 '] funzionato correttamente.

Questo era il problema nelle seguenti domande:

Se questo non aiuta, pubblica il codice HTML e ti aiuterò;)


Risposta popolare

Questo funziona per me:

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

e uscite

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

Nota Io uso la funzione di avvio di XPATH.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché