Парсинг данных с сайта - C# (190214)

Узнай цену своей работы

Формулировка задачи:

Работаю с HTML Agility Pack. Нужно считать данные с таблицы сайта.
public Form1()
        {
            string url = "http://www.finam.ru/analysis/leaders/";
            InitializeComponent();
 
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(getRequest(url));
                HtmlNodeCollection c = doc.DocumentNode.SelectNodes("//th[@name='quote']");
                string result = "";
 
            if(c!=null)
            foreach (var item in c)
            {
                result += item.InnerText+Environment.NewLine;   
            }
 
            richTextBox1.Text = result;
 
        }
Но вот проблема, в переменной doc просматриваю HTML код который программа загружает, в этом коде отсутсвует элемент <tbody> таблицы, а именно в этом блоке хранятся данные, которые мне нужны. Как получить данные из этого блока. До <thead></thead> добрался, заголовки парсит без проблем. Загружаю HTML код так:
 public string getRequest(string url)
        {
            try
            {
                var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                httpWebRequest.AllowAutoRedirect = false;//Запрещаем автоматический редирект
                using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
                {
                    using (var stream = httpWebResponse.GetResponseStream())
                    {
                        using (var reader = new StreamReader(stream, Encoding.GetEncoding(httpWebResponse.CharacterSet)))
                        {
                            return reader.ReadToEnd();
                        }
                    }
                }
            }
            catch
            {
                return String.Empty;
            }
        }
с парсингом сталкиваюсь впервые, оч хочу понять что и как.

Решение задачи: «Парсинг данных с сайта»

textual
Листинг программы
  private void webBrowserControl_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
        string doc = "<html>"; 
 
            //--- Загрузка html из браузера ---
            #region browserLoad
            HtmlElementCollection SearchTag = webBrowser1.Document.GetElementsByTagName("html");
 
            foreach (HtmlElement item in SearchTag)
            {
               doc += item.InnerHtml;
            }
 
            doc += "</html>";
 
            #endregion browserLoad
 
            //--- Считываем данные при загрузке ---
            #region DataLoad
 
           HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();
 
           html.OptionFixNestedTags = true;
           html.OptionAutoCloseOnEnd = true;
 
           html.LoadHtml(doc);
 
           HtmlNodeCollection c = html.DocumentNode.SelectNodes("//td[@class='quote']/a");
    
           int k = 1;
           if (c != null)
           {
               foreach (HtmlNode item in c)
               {
                   richTextBox1.Text += k + ") " + item.InnerHtml + Environment.NewLine;
                   k++;
               }
           }
 
          if (richTextBox1.Text=="") richTextBox1.Text = "Failed to load data!";
 
            #endregion DataLoad
           }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.643 из 5