Как HtmlAgilityPack извлекает текст из узла html, чей атрибут класса добавляется динамически

html-agility-pack

Вопрос

Дорогие друзья, я хочу извлечь текст å¹³å ‡3.6 星 из этого сегмента кода, взятого из 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>

Мой вопрос - значение тега span class "s_star_3_5 " варьируется от разных уровней рейтинга клиента и добавляется динамически. Поэтому я пытаюсь использовать doc.DocumentNode.SelectSingleNode(" //span[@class='swSprite']").InnerText или //span[@class='swSprite s_star_3_5 '] , но результатом является ошибка или нет. я хочу!

Какие-либо предложения?

Принятый ответ

Прежде всего, я предлагаю вам сохранить значение 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