Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
2 / 2 / 3
Регистрация: 21.05.2014
Сообщений: 13

Парсинг данных с сайта

18.09.2015, 14:40. Показов 4515. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю с HTML Agility Pack. Нужно считать данные с таблицы сайта.
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 код так:
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 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;
            }
        }


с парсингом сталкиваюсь впервые, оч хочу понять что и как.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2015, 14:40
Ответы с готовыми решениями:

Парсинг данных с сайта
Добрый вечер, есть проблема : Мне надо парсить количество поставленных денег на каждую из команд на на данном сайте (del). Дело в...

Парсинг данных с сайта
Помогите пожалуйста составить регулярное выражение для задания : (Определить количество книг по жанрам на произвольном сайте библиотеки или...

Парсинг данных с сайта с javascript
Есть сайт с некими данными (раз в день обновляемыми, потому и нужна программа), данные выдаются примерно следующим образом: 1....

2
2 / 2 / 3
Регистрация: 21.05.2014
Сообщений: 13
18.09.2015, 14:45  [ТС]
Вот html код с сайта и который загружаю в программе, это нормально, что блок <tbody> отсутствует? Если да то почему и как тогда обращаться к данным, которые внутри этого блока.
Миниатюры
Парсинг данных с сайта   Парсинг данных с сайта  
0
2 / 2 / 3
Регистрация: 21.05.2014
Сообщений: 13
24.09.2015, 21:38  [ТС]
Разобрался! tbody отсутсвует из-за того, что таблица формируется при помощи ajax. В этом случае на форму нужно загрузить webBrowser, запустить в нем нужный сайт, а затем на основе того что он загрузил рабоать с данными с помощью HAP (html agility pack):

Загрузка сайта в webBrowser
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Form1()
        {
            InitializeComponent();
            webBrowser1.Visible = false;
            LoadUrl();        
        }
 
 private void LoadUrl()
        {
            richTextBox1.Visible = false;
            pictureBox1.Visible = true;
 
            //Создание ссылки
            Uri uri = new Uri(URL);
 
            //запуск браузера
            webBrowser1.AllowNavigation = true;
            webBrowser1.ScriptErrorsSuppressed = true;
 
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowserControl_DocumentCompleted);
            webBrowser1.Navigate(uri);
        }



Считываем HTML из webBrowser
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  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
           }


Надеюсь кому-нибудь поможет.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.09.2015, 21:38
Помогаю со студенческими работами здесь

Парсинг данных с сайта или страницы сайта
Здравствуйте, добрые люди! Есть задача спарсить данные с страницы соц сети. Или просто со страницы с помощью js. На пхп не предлагать....

Парсинг данных с сайта
Ребят помогите спарсить данные с https://www.marathonbet.ru/su/betting/11?periodGroupAllEvents=2 нужно спарсить все матчи в массив только...

Парсинг данных с сайта
Есть удаленный сервер, тобиш сайт, на нем стоит рейтинг серверов. Мне нужно спарсить все сервера имеющиеся в рейтинге и если добавится...

Парсинг данных с сайта
Здравствуйте, при парсинге данных с сайте, где указаны фамилии по-русски в Powershell получается ерунда, прикладываю скриншот и код. Я...

Парсинг данных с сайта
Всем привет, хочу сделать парсинг новостей с сайта, с использованием jsoup. Информация парсится, но парсится всё а не только ссылка и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru