Парсинг данных с сайта - C# (190214)
Формулировка задачи:
Работаю с HTML Agility Pack. Нужно считать данные с таблицы сайта.
Но вот проблема, в переменной doc просматриваю HTML код который программа загружает, в этом коде отсутсвует элемент <tbody> таблицы, а именно в этом блоке хранятся данные, которые мне нужны. Как получить данные из этого блока. До <thead></thead> добрался, заголовки парсит без проблем.
Загружаю HTML код так:
с парсингом сталкиваюсь впервые, оч хочу понять что и как.
Листинг программы
- 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;
- }
Листинг программы
- 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
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д