Вопрос

ок, я получил этот код:

public static string ScreenScrape(string url)
    {
        System.Net.WebRequest request = System.Net.WebRequest.Create(url);
        // set properties of the request
        using (System.Net.WebResponse response = request.GetResponse())
        {
            using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }
    }

Теперь я хочу отфильтровать текст, чтобы получить Div Class = "Comment" есть ли другой вариант, кроме как использовать регулярные выражения?или это единственный способ?

Спасибо

Это было полезно?

Решение

Вам необходимо использовать Пакет гибкости HTML.

Например:

var doc = new HtmlWeb().Load(url);
var comments = doc.Descendants("div")
                  .Where(div => div.GetAttributeValue("class", "") == "comment");

Обратите внимание, что это не найдет <div class="OtherClass comment">;если ты это ищешь, ты можешь позвонить IndexOf.

Другие советы

HtmlAgilityPack — это просто пакет, который позволяет вам манипулировать html-файлами, однако, если вы хотите выполнить очистку экрана, Selenium WebDriver с PhantomJS — лучшее решение.PhantomJS — это автономный веб-браузер, поэтому он очень быстрый.Более того, он имеет гораздо лучшую функциональность по сравнению с пакетом HTML Agility.Есть короткий курс на эту тему.

Не следует использовать регулярные выражения для анализа HTML — они не подходят для этой задачи, поскольку HTML для них слишком сложен.
Вам следует использовать парсер HTML.
Смотрите также:Ищу парсер C# HTML.

Ваш первый порт захода должен быть Пакет гибкости HTML.

Регулярные выражения — это классический способ анализа такого рода входных данных для языков, отличных от .NET.

Кроме того, если вы можете нормализовать это до варианта XML (т.XHTML), вы можете использовать XPATH для запроса и получения необходимых узлов.

Чего вы не хотите делать, так это реализовывать свой собственный парсер.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top