Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18

Парсинг страницы

27.03.2016, 15:05. Показов 4005. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день форумчане, появилась необходимость создать программу на Windows Forms C#.
Хотел распарсить html страницу, получил код html страницы через C#.
Посмотрел и увидел что данные которые мне нужны генерируются и выводятся с помощью JavaScript (т.е. когда я получаю Html код, в нем нет нужных мне данных).
Как выполнить JavaScript код в C#, чтобы на выходе получить необходимые данные (мне нужен список матчей с сайта?
Помогите разобраться, как получить список матчей в Windows Forms, если они выводятся динамически и через JavaScript?
Буду очень благодарен за оказанную помощь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2016, 15:05
Ответы с готовыми решениями:

Парсинг страницы
Отправляю пост запрос на страницу с последующим редиректом. Далее получаю код страницы. Нужно спарсить данные из кода. чем лучше всего это...

Парсинг кода динамической страницы
Как парсить информацию с обычных несложных сайтов я понял. get и post запросы понял как работают. Но вот как это делается, если...

Парсинг веб страницы: время восхода
Доброго времени суток. Не выходит разпарсить страницу http://voshod-solnca.ru/%D0%91%D0%B5%D0%BB%D0%B3%D0%BE%D1%80%D0%BE%D0%B4.html В...

14
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
27.03.2016, 15:36
Я подобное выкрутил через WebBrowser, после того как страница загруженна полностью из нее можно получить сгенерированный html, а потом распарсить его Html Agility Pack. Но мне такой подход не понравился, может кто-то предложит варианты лучше.
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
27.03.2016, 15:41  [ТС]
Я получил Html код), не понимаю как JavaScript выполнить. Все что мне нужно как раз не вывелось (даже в webbrowser), там скрипт ошибку выдает (скрин в приложении).
Миниатюры
Парсинг страницы  
0
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
27.03.2016, 15:54
Попробуйте установить у него свойство ScriptErrorsSuppressed в true, обычно помогает.
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
27.03.2016, 16:03  [ТС]
Ошибки исчезают, но скрипт не грузится все равно
0
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
27.03.2016, 16:06
Тогда можете попробовать сторонние браузеры, например тот же WebKit, но как я уже говорил
Цитата Сообщение от orlov87 Посмотреть сообщение
Но мне такой подход не понравился, может кто-то предложит варианты лучше.
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
27.03.2016, 16:12  [ТС]
Не могли бы вы скинуть код или пример как мне это реализовать? А то никогда не использовал сторонние браузеры.
0
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
27.03.2016, 16:21
Я сам его никогда не использовал, но в теории это должно выглядеть так:
C#
1
2
3
4
5
6
7
8
9
10
webKitBrowser1.Navigate("www.google.com");
webKitBrowser1.DocumentCompleted += 
     new WebBrowserDocumentCompletedEventHandler(webKitBrowser1_DocumentCompleted);
 
void webKitBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
  string documentContent = webKitBrowser1.DocumentText;
 
  MessageBox.Show(documentContent);      
}
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
27.03.2016, 16:40  [ТС]
Выходит ошибка
Миниатюры
Парсинг страницы  
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
27.03.2016, 17:49  [ТС]
Ошибку исправил, все скрипты грузятся в компонент веб-браузер, а как вычленить оттуда таблицу, может как то на время работы программы сохранять данные страницы чтобы эту таблицу вывести?
0
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
27.03.2016, 18:33
Если я вас правильно понял, то вам дальше нужно парсить html. Грубо говоря как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Net;
using HtmlAgilityPack;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient webClient = new WebClient();
            string page = webClient.DownloadString("http://www.deu.edu.tr/DEUWeb/Guncel/v2_index_cron.html");
 
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(page);
 
            HtmlNode table = doc.DocumentNode.SelectSingleNode("//table");
            foreach (var cell in table.SelectNodes("tr/td"))
            {
                string someVariable = cell.InnerText;
            }
        }
    }
}
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
27.03.2016, 19:58  [ТС]
Проблема в том что он при загрузке в коде все равно не отображает таблицу
В коде вот это (код JS):
JavaScript
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
<script type="text/javascript">
        //<![CDATA[
            $(function() {
            document.domain = 'myscore.ru';
 
    custom_enable = true;sentences = [];sentences_parts = [];hover_color = null;iframe_external = false;default_tz = 3;matches = null;mid_s = 1;mpe_alias = 'p1:100, p2:100, p3:100, p4:100, p5:100, p6:100, p7:100, p8:100, p9:100, p10:100';mpe_debug = false;mpe_delivery = 'p';mpr = '18';odds_enable = true;mixed_feed = false;project_id = 12;check_lang_box_geo_ip = ["TR","IN","HU","DE","CH","GR","SK","FR","AE","AT","BG","ID","KP","KR","MY","NL","NO","RO","SE","SI","GB","AU","NZ","CZ","PL","FI","PT","ES","UA","DK","HR","MK","BA","RS","ME","IT","BR","AR","BO","CL","CO","GF","GY","PY","PE","SR","UY","VE","PA","JM","MX","GT","NI","CU","CA"];sport_sort = {"s1":0,"s4":1,"s2":2,"s3":3,"s12":4,"s7":5,"s11":6,"s6":7,"s18":8,"s31":9,"s32":10,"s5":11,"s21":12,"s10":13,"s16":14,"s34":15,"s22":16,"s23":17,"s14":18,"s36":19,"s13":20,"s28":21,"s33":22,"s25":23,"s29":24,"s30":25,"s17":26,"s26":27,"s8":28,"s19":29,"s35":30,"s15":31,"s9":32,"s24":33};prev_category = null;prev_date = null;push_fail_logging = false;refresh_serial = 0;sport = 'soccer';stats_enable = true;tudate = 1459036800;cjs.cfg.topLeaguesFirst = true;cjs.cfg.fs_stats_enable = true;cjs.cfg.fs_stats_url_mygames = 'http://remote-stats.flashscore.com/mg';cjs.cfg.fs_stats_url_inscore = 'http://remote-stats.flashscore.com/in';cjs.cfg.fs_stats_url_adblocked = '';odds_bonus_texts = [];stats_live_enable = 1;country_id = 0;tournament_id = 0;participant_id = 0;
            try {
                matches = /^([^#]+)#(.*)\breload:([0-9]+)\-([0-9])(.*)$/.exec(parent.location.href);
            } catch (e) {}
 
            if(matches)
            {
                prev_date = matches[3];
                prev_category = matches[4];
                // cut out reload message from url bookmark
                parent.location.href = matches[1] + "#" +
                    (matches[2].substr(matches[2].length - 1) == ";" ? matches[2].substr(0, matches[2].length - 1) : matches[2]) +
                    ((matches[5].substr(0, 1) == ";" && !matches[2].length) ? matches[5].substr(1) : matches[5]);
            }
 
                var startUpdater = true;
            init('soccer', 0, '0', true, null, null, startUpdater, '0');
 
        });
            //]]>
    </script>
Миниатюры
Парсинг страницы  
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.03.2016, 00:44
Что-то вы по-моему абсолютно не то делаете... Во-первых мне что-то совершенно не понятно, как могут данные о матчах зависеть от каких-то скриптов. Это же не сгенерированные на клиенте данные, эти данные должны быть получены с сервера. На большинстве подобных сайтов они подгружаются через AJAX в формате JSON или XML, и бывает не сложно послать такой же запрос и все необходимое спарсить. Максимум, что там по идее может быть, это какие-то неочевидные параметры в запросе, возвращающем список матчей. Но я уже не первый бот для ставок пишу, и никаких таких проблем на этом этапе никогда не имел. Да, и для работы со скриптами удобно использовать движок Awesomium, если они действительно необходимы.
0
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
29.03.2016, 23:24  [ТС]
Дело в том, чтобы получить матчи там нужен какой то ключ,чтобы сервер вернул данные, просто так сервер не дает их. Не могу найти где он передается

Добавлено через 14 часов 11 минут
Не могли бы вы мне подсказать как авторизоваться,чтобы получить список матчей от сайта myscore.ru?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
30.03.2016, 00:08
Цитата Сообщение от марсль Посмотреть сообщение
Не могу найти где он передается
Что и где передается-видно через Fiddler.
Цитата Сообщение от марсль Посмотреть сообщение
Не могли бы вы мне подсказать как авторизоваться,чтобы получить список матчей от сайта myscore.ru?
Ну вы попробуйте что-то сделать, а я подскажу по мере возможности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2016, 00:08
Помогаю со студенческими работами здесь

Парсинг страницы в Webbrowser выдает ошибку
В фоновом потоке, загружаю страницу webbrowser.navigate Пытаюсь получить загруженный документ string content =...

Парсинг token из исходного кода страницы
Добрый день,мне нужно получить так называемый токен из исходного кода страницы. Отправляется get запрос,после чего идёт парсинг со...

Парсинг html страницы (мониторинг обновления софта)
Здравствуйте, господа. Есть программа, которой активно пользуются люди. Программа часто обновляется, и по этому мне бы хотелось реализовать...

Парсинг страницы после передачи ей POST параметров
Здравствуйте. Помогите пожалуйста получить html код страницы после отправки ей POST запроса. Заранее спасибо.

Парсинг страницы
Вообщем есть ссылка http://vk.com/wall-&quot;+ ID группы/+&quot;?own=1 Пример http://vk.com/wall-1234567?own=1 ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru