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

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

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

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

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

textual
Листинг программы
  1.   private void webBrowserControl_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
  2.         {
  3.         string doc = "<html>";
  4.  
  5.             //--- Загрузка html из браузера ---
  6.             #region browserLoad
  7.             HtmlElementCollection SearchTag = webBrowser1.Document.GetElementsByTagName("html");
  8.  
  9.             foreach (HtmlElement item in SearchTag)
  10.             {
  11.                doc += item.InnerHtml;
  12.             }
  13.  
  14.             doc += "</html>";
  15.  
  16.             #endregion browserLoad
  17.  
  18.             //--- Считываем данные при загрузке ---
  19.             #region DataLoad
  20.  
  21.            HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();
  22.  
  23.            html.OptionFixNestedTags = true;
  24.            html.OptionAutoCloseOnEnd = true;
  25.  
  26.            html.LoadHtml(doc);
  27.  
  28.            HtmlNodeCollection c = html.DocumentNode.SelectNodes("//td[@class='quote']/a");
  29.    
  30.            int k = 1;
  31.            if (c != null)
  32.            {
  33.                foreach (HtmlNode item in c)
  34.                {
  35.                    richTextBox1.Text += k + ") " + item.InnerHtml + Environment.NewLine;
  36.                    k++;
  37.                }
  38.            }
  39.  
  40.           if (richTextBox1.Text=="") richTextBox1.Text = "Failed to load data!";
  41.  
  42.             #endregion DataLoad
  43.            }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут