Чтение данных в HTML-формате

#c# #.net #asp.net

#c# #.net #asp.net

Вопрос:

Я загрузил HTML-данные с веб-сайта, используя класс webclient. Теперь я хочу прочитать данные между тегами. Я узнал о htmlagilitypack, но я не хочу его использовать. Я использую следующий код для получения HTML-данных.

 WebClient client = new WebClient();
        string url = "XXXXXXXXXXXXX" 
        Byte[] requestedHTML; 
        requestedHTML = client.DownloadData(url);
        string htmlcode = client.DownloadString(url);

        //client.DownloadFile(url, @"E:test.html");

        UTF8Encoding objUTF8 = new UTF8Encoding();
        string html = objUTF8.GetString(requestedHTML);
        Response.Write(html);
  

Комментарии:

1. Почему вы не хотите использовать HtmlAgilityPack?

2. @Muad’Dib попал в точку, задано 46 вопросов, и принят только 1 треть — это немного мало…

3. Хорошо, я буду делать это всякий раз, когда у меня будет свободное время.. Теперь кто-нибудь может дать ответ на этот вопрос?

4. Какие данные вы хотите прочитать, означает значение какого-либо конкретного тега / элемента?

5. Данные Html содержат в себе тег table. В этом существовало много <tr> . один из <tr> содержит данные, которые я хочу извлечь. Это то, что я хочу знать.

Ответ №1:

Вместо этого используйте регулярные выражения.

Ответ №2:

Попробуйте это:

         WebClient client = new WebClient();
        string url = "Your URL";
        Byte[] requestedHTML;
        requestedHTML = client.DownloadData(url);
        string htmlcode = client.DownloadString(url);

        //client.DownloadFile(url, @"E:test.html");

        UTF8Encoding objUTF8 = new UTF8Encoding();
        string html = objUTF8.GetString(requestedHTML);           


        MatchCollection m1 = Regex.Matches(html, @"(<h3>(.*?)</h3>)",
        RegexOptions.Singleline);

        foreach (Match m in m1)
        {
            string cell = m.Groups[1].Value;
            Match match = Regex.Match(cell, @"<h3>(. ?)</h3>");
            if (match.Success)
            {
                string value = match.Groups[1].Value;
            }
        }
  

Строковое значение даст вам значение = «Чикаго»

Комментарии:

1. Данные Html содержат в себе тег table. В этом существовало много <tr> . один из <tr> содержит данные, которые я хочу извлечь. Это то, что я хочу знать.

2. Можете ли вы указать URL, с которого вы хотите прочитать данные, и какие конкретные данные вы хотите прочитать из строки??

3. URL : zipinfo.com/cgi-local/zipsrch.exe?zip=60680 .. Здесь я передаю почтовый индекс на сайт и получаю связанные данные. HTML-данные содержат название города с заданным почтовым индексом, здесь название города, которое я получил, — Чикаго (вы можете видеть это в html-данных). это значение, которое я хочу получить.

4. Да, Тезис верен, регулярное выражение выполняется довольно быстро .. Я изменил ответ, попробуйте это

5. @ BreakHead: Всего за 2 минуты до этого это работало, но сейчас это не так. Количество совпадений равно 0. Я не понимаю, почему это произошло так