Могу ли я настроить 'HtmlWeb', чтобы он автоматически конвертировал html-объекты? - PullRequest
0 голосов
/ 01 ноября 2018

Я использую объект HtmlWeb из HtmlAgilityPack для запроса текста с веб-сайта:

HtmlDocument lHmtlDoc = new HtmlWeb().Load("http://www.my-website.de");

var lValue1 = lHmtlDoc.DocumentNode.SelectSingleNode("//div[@class='item-1']").InnerHtml;
var lValue2 = lHmtlDoc.DocumentNode.SelectSingleNode("//div[@class='item-2']").InnerHtml;
// ... 100 further different values selected

Моя проблема: Все значения, содержащие HTML-сущности, такие как: «Текст   Текст & Текст ...»

Я хочу преобразовать эти HTML-объекты в текст. Я мог бы сделать это:

lValue1 = System.Net.WebUtility.HtmlDecode(lValue1);
lValue2 = System.Net.WebUtility.HtmlDecode(lValue2);
// ... 100 more

Но это решение - плохой подход, потому что код становится неопрятным, и это слишком много работы, чтобы сделать это для каждого элемента.

Можно ли настроить HtmlWeb таким образом, чтобы он автоматически конвертировал html-объекты?

1 Ответ

0 голосов
/ 02 ноября 2018

Попробуйте реализовать методы расширения для HtmlNode

    public static class HtmlAgilityPackExtensions
{
    public static string InnerHtmlDecode(this HtmlNode htmlNode)
    {
        return System.Net.WebUtility.HtmlDecode(htmlNode.InnerHtml);
    }
}

Использование

 var result2 = lHmtlDoc.DocumentNode.SelectSingleNode("//div[@class='item-1']").InnerHtmlDecode();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...