Используя HTML Agility Pack, чтобы получить текст рядом с изображением?

c# c#-4.0 html-agility-pack web-scraping

Вопрос

У меня есть этот бит html, который мне нужно разобрать, хотя

<p class="feature_list">

<img src="candy.gif" alt="candy" title="candy"/>&nbsp;
                        x 3&nbsp;&nbsp;
<img src="lollies.gif" alt="lollies" title="lollies"/>&nbsp;
                        1&nbsp;&nbsp;
<img src="system.gif" alt="system" title="system"/>&nbsp;

                        x 1&nbsp;&nbsp;
<img src="phone.gif" alt="phone" title="phone"/>&nbsp;
                        x 1&nbsp;&nbsp;
</p>

Как вы можете видеть, есть изображение, а затем текст, похожий на «x 3» рядом с ним.

Я хочу сделать это через каждый образ и записать текст рядом с ним. Однако текст находится за пределами тега «img».

Мне было интересно, есть ли способ сделать это, используя пакет гибкости HTML?

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

Следующий код:

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.Load(yourHtml);

    foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//img"))
    {
        Console.WriteLine(HtmlEntity.DeEntitize(node.NextSibling.InnerText).Trim());
    }

Вывод:

x 3
1
x 1
x 1

Обратите внимание на утилиту HtmlEntity, которая упрощает обработку объектов HTML (например, &nbsp; ).



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow