|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.07.2016, 23:18 | #1 |
Пользователь
Регистрация: 27.07.2016
Сообщений: 23
|
Доступ к данным Ajax из другой программы
Всем привет.
Есть приложение для игры в онлайн-покер, а в нём - окно статистики, в котором есть дочернее окошко класса "Internet Explorer_Server". В этом окошке, собственно, данные статистики, которые мне нужны. К окошку доступ я получил, считываю через IHTMLDocument2. Но проблема в том, что там есть какой-то, по всей видимости, Ajax-контейнер, подгружающий данные самостоятельно, и к которым я никак не могу получить доступ. Изначальную страницу я вижу, а то, что подгружается динамически - никак. Вот файл с текстом моего модуля Делфи (рабочий, но видит только изначальную страницу): Unit1.pas А вот файл с текстом HTML-страницы, получаемой через IHTMLDocument2: 1.txt Может подскажет кто, как к этому Ajax-у подобраться? А то измучился уже вручную забивать всё в Эксель. |
27.07.2016, 23:38 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Выложите код сюда или (если очень сильно большой) загрузите на нормальный файлохостинг (яндекс.диск, дропбокс, rghost, ...) или gist.github.com
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
28.07.2016, 11:41 | #3 |
Пользователь
Регистрация: 27.07.2016
Сообщений: 23
|
Текст модуля Delphi:
Код:
|
28.07.2016, 11:49 | #4 |
Пользователь
Регистрация: 27.07.2016
Сообщений: 23
|
Текст первой части HTML-страницы:
Код HTML:
<!DOCTYPE html SYSTEM "about:legacy-compat"> <html xmlns="Здесь был адрес (чтобы без палева)"> <head> <title>Здесь было название (чтобы без палева))</title> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"/> <meta content="IE=Edge" http-equiv="X-UA-Compatible"/> <link href="/skins/...(без палева).../favicon.ico" rel="shortcut icon"/> <link rel="stylesheet" href="/c/css/default_styles.css"/> <link rel="stylesheet" href="/c/css/dialog.css"/> <link rel="stylesheet" href="/c/css/common-web-styles.css"/> <link rel="stylesheet" href="/c/css/common_styles.css"/> <link rel="stylesheet" href="/c/css/page_styles.css"/> <link rel="stylesheet" href="/c/css/menu_styles.css"/> <link rel="stylesheet" href="/c/css/table_styles.css"/> <link rel="stylesheet" href="/c/css/fonts.css"/> <link rel="stylesheet" href="/opencms/opencms/...(без палева)...//c/css/custom.css"/> <script type="text/javascript" src="/c/js/cg/math.js">/**/</script> <script type="text/javascript" src="/c/js/cg/html.utils.js">/**/</script> <script type="text/javascript" src="/c/js/jquery/jquery-1.7.2.min.js">/**/</script> <script type="text/javascript" src="/c/js/jquery/jquery.browser.min.js">/**/</script> <script type="text/javascript" src="/c/js/jquery/jquery.form.min.js">/**/</script> <script type="text/javascript" src="/c/js/cg/ajax.content.loader.js">/**/</script> <script type="text/javascript" src="/c/js/plugins/ui/minified/jquery-ui.min.js">/**/</script> <script type="text/javascript" src="/c/js/plugins/ui/i18n/jquery.ui.datepicker-ru.js">/**/</script> <script type="text/javascript" src="/c/js/plugins/ui/jquery.ui.timepicker.addon.js">/**/</script> <script type="text/javascript" src="/c/js/jquery/jquery.mask.plugin.js">/**/</script> <link rel="stylesheet" href="/c/css/jquery-ui/themes/base/jquery-ui.css"/> <link rel="stylesheet" href="/c/css/jquery-ui/themes/base/jquery.ui.all.css"/> <style type="text/css"> .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; } .ui-timepicker-div dl{ text-align: left; } .ui-timepicker-div dl dt{ height: 25px; } .ui-timepicker-div dl dd{ margin: -25px 0 10px 65px; } .ui-timepicker-div td { font-size: 90%; } </style> <script type="text/javascript" src="/c/js/cg/scripts.js">/**/</script> <script type="text/javascript" src="/c/js/cg/session.checker.js">/**/</script> <script type="text/javascript"> doTimezone(); AjaxPageLoader.PageLoader.checkAjaxRedirect(); $(function(){ $(window).bind('hashchange',function(){AjaxPageLoader.PageLoader.actionHistory()}); }); $(document).ready(function(){ AjaxPageLoader.Preloader.message = 'Загрузка...'; }); SessionChecker.init( '198000', '/games/sessionrefresher.html' ); </script> <script type="text/javascript"> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-75269641-1', {'name':'CG'}); ga('CG.set', 'dimension1', location.host.replace('www.','')); ga('CG.set', 'dimension2', navigator.userAgent); ga('CG.send', 'pageview'); </script> <script type="text/javascript" src="/c/js/cg/detect_flash.js">/**/</script> <script type="text/javascript" src="/c/js/detect_skins.js">/**/</script> <script type="text/javascript" src="/c/js/jquery/jquery.selectbox-0.5.js">/**/</script> <script type="text/javascript" src="/c/js/jquery/swf_object.js">/**/</script> <!--[if IE]> <link href="/c/css/ie.css" rel="stylesheet" type="text/css"/> <![endif]--> <!--[if lte IE 8]> <link href="/c/css/ie8.css" rel="stylesheet" type="text/css"/> <![endif]--> <script type="text/javascript"> var url = '/lobby/lobbyflash.html'; var t_url = '/lobby/tourneylobbyflash.html'; var sid = 'c4ce8c8217314bad-898b99749d1ec368'; var _w = '800'; var _h = '600'; var resizable = '1'; var scrollbars = '0'; var testLoginUrl = '/testxml/casino/testlogin.html'; var notLoggedUrl = ''; var notLoggedFunc = false; var flashWithLogin = 'true'; lobby.init(url, t_url, sid, _w, _h, resizable, scrollbars, testLoginUrl, notLoggedUrl, notLoggedFunc, flashWithLogin); </script> <script type="text/javascript"> $(document).ready(function() { var langSelected = false; if(!langSelected) { $('#select_lang').selectbox({debug: true, inputClass: 'selectbox_' + 'ru'+'_a', lang: 'Русский'}); langSelected = true; } }); </script> <link type="text/css" rel="stylesheet" href="/c/css/common-mobile-styles.css"/> </head> <body class="mobile"> <div class="mobile_content_wrapper"> <div class="mobile_content"> <div class="history_menu"> <ul> <li class=""> <a class="hand_info_button" href="/mobile/history/poker-games.html?tourney="> <span class="side_menu_text">Стол</span> </a> </li> <li class="active"> <a class="hand_info_button" href="/mobile/history/poker-games.html?tourney=1"> <span class="side_menu_text">Турнир</span> </a> </li> <li class=""> <a class="hand_info_button" href="/mobile/history/poker-games.html?tourney=2"> <span class="side_menu_text">Сит-энд-Гоу</span> </a> </li> <li class=""> <a class="hand_info_button" href="/mobile/history/poker-games.html?tourney=4"> <span class="side_menu_text">Windfall</span> </a> </li> <li class=""> <a class="hand_info_button" href="javascript:clientRedirect('ts-history');"> <span class="side_menu_text">Специальные</span> </a> </li> </ul> </div> Последний раз редактировалось index58; 28.07.2016 в 11:55. |
28.07.2016, 11:51 | #5 |
Пользователь
Регистрация: 27.07.2016
Сообщений: 23
|
Текст второй части HTML-страницы:
Код HTML:
<script type="text/javascript"> var formName = 'calendarForm'; var allRowsPerPageElements = new Array(); var currentPages = new Array(); var tooltipFn = null $(document).ready(function(){ $('form[name='+formName+']').submit(function(e){ e.preventDefault(); e.stopPropagation(); var params = $(e.target).serializeArray(), namepage; $.each(params, function(i, item) {var name = item['name'];if(_AND(_GT(name.indexOf('_page'), 0), name.indexOf('_rows_per_page') === -1)) namepage = name}); if (namepage) goToPage(namepage, 1, 1); }); }); window.goToPage = function (namepage, numpage, reset) { document[formName][namepage].value=numpage; if (reset == 1) { for (var rowsPerPage in currentPages){ var element = document.getElementById(currentPages[rowsPerPage]); if (element){ element.value = 1; } } } var tableName = namepage.replace('_page',''); AjaxPageLoader.Preloader.message_with_img = true; AjaxPageLoader.submitForm(document[formName].name, [tableName + '_wrapper'], tooltipFn); }; window.setAllRowsPerPage = function (value){ for (var rowsPerPage in allRowsPerPageElements){ var element = document.getElementsByName( allRowsPerPageElements[rowsPerPage])[0]; if (element){ element.value = value; } } }; var putDate = function(){ var fdate = $('#todate_id', this.data).val(); var parts = fdate.split('/'); $('#todate_id').datepicker('setDate',new Date(parts[2],parseInt(parts[1], 10)-1,parts[0])); }; function doApply(){ AjaxPageLoader.submitForm('calendarForm', ['game_history_container'], putDate); } $(document).ready(function(){ $('.prev_date').click(function(){ $('input[name="action"]').val('prev'); doApply(); }); $('.next_date').click(function(){ $('input[name="action"]').val('next'); doApply(); }); }); </script> <div class="poker_history_container poker_history_tournament_container"> <form method="post" action="/mobile/history/poker-games.html" name="calendarForm"> <input value="1" name="tourney" type="hidden"/> <table class="noborder history_filter_table table_noborder"> <tr> <td class="nowrap">Дата начала: </td> <td> <a class="prev_date arrow_left_1" href="#" title="Previous day"> <span class="hidden">Prev</span> </a> </td> <td> <script type="text/javascript"> var todate = function(dateText, inst) {}; </script> <div style="position:relative;display: inline-block;"> <input id="todate_id" value="21/04/2016" name="todate" class="datepicker_common input_common input " type="text" readonly="readonly"/> <script type="text/javascript"> var setMinDate = null; setMinDate = new Date(2004,00,01); var setMaxDate = null; setMaxDate = new Date(2016,11,31); $(document).ready(function(){ $('#todate_id').datepicker({ hideIfNoPrevNext: true, dateFormat: 'dd/mm/yy', defaultDate: null, timeFormat: '', setDate: '21/04/2016', changeYear: true, yearRange: '2004:2016', separator: ' ', buttonText: 'Выбор даты', buttonImage: '/c/i/calendar_icon.png', buttonImageOnly: true, minDate: setMinDate, maxDate: setMaxDate, showOn: 'both', onClose: doApply, closeText: 'Clear', showButtonPanel: false, beforeShow: null, onChangeMonthYear: null }); }); </script> <script type="text/javascript"> $(function () {$('#todate_id').parent().width($('#todate_id').outerWidth());}); </script> </div> </td> |
28.07.2016, 11:52 | #6 |
Пользователь
Регистрация: 27.07.2016
Сообщений: 23
|
Текст третьей части HTML-страницы:
Код HTML:
<td> <a class="next_date arrow_right_1" href="#" title="Next day"> <span class="hidden">Next</span> </a> </td> <td class="nowrap">Вид игры: </td> <td> <select class="select_common select" id="select-game" name="game"> <option value="59">ОКП Ананас</option> <option value="9" selected="selected">Холдем</option> <option value="18">Americana</option> <option value="16">32 Дроу</option> <option value="19">Омаха Хай</option> <option value="20">Омаха Хай-Лоу</option> <option value="21">7 Стад Хай</option> <option value="22">7 Стад Хай-Лоу</option> <option value="68">Техас 6+</option> </select> </td> <td> <a class="link_show" id="btn_doAply_submit" href="javascript:doApply()">Показать</a> </td> </tr> </table> <br/> <h2>История покерных игр - Турнир</h2> <div id="game_history_container"> <input value="" name="action" type="hidden"/> <br/> <div class="tournamentshistory_wrapper table_wrapper" id="tournamentshistory_wrapper"> <table class="border table_common table tournamentshistory" id="tournamentshistory_table"> <tr class="header th_row first"> <th title="Start" class=" darkcell date first lightcell textcell ">Start</th> <th title="Турнир" class=" darkcell name lightcell textcell ">Турнир</th> <th title="Взнос" class=" darkcell buyin place lightcell textcell ">Взнос</th> <th title="Место" class=" darkcell lightcell textcell ">Место</th> <th title="Приз" class=" darkcell prize last lightcell textcell ">Приз</th> </tr> <tr class="odd last"> <td class="textcell lightcell date first"><a href=/mobile/history/poker-hands.html?tourneyId=00000000000002d000000000011d2045&tourney=1>21 апр 23:30</a></td> <td class="textcell lightcell name"><b>Multibounty 5000 RUB GTD R&A</b><br/>Texas Hold'em NL<br/><div title="BuyIn: 40 р. Fee: 4 р. Knockout: 40 р.">40 р. + 4 р. + 40 р.</div></td> <td class="textcell lightcell buyin place"><span class="history_result_wallet" title="Initial balance: 84 р. Closing balance: 0,00 р."> </span> <span class="result"><b>84 р.</b></span></td> <td class="textcell lightcell">48</td> <td class="textcell lightcell prize last">0,00 р.</td> </tr> </table> <script type="text/javascript"> allRowsPerPageElements.push('tournamentshistory_rows_per_page'); currentPages.push('tournamentshistory_page'); </script> <table id="pages_table_tournamentshistory" class="pages"> <tr> <td class="left_td pages_input"> <input id="tournamentshistory_page" value="1" name="tournamentshistory_page" type="hidden"/> </td> </tr> </table> </div> </div> <br/> </form> <br/> </div> </div> </div> </body> </html> |
28.07.2016, 12:15 | #7 |
Пользователь
Регистрация: 27.07.2016
Сообщений: 23
|
Понимаю, что текст страницы HTML большой, но я в этих скриптах вообще не шарю.
|
28.07.2016, 12:26 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
То что динамически подгружается вы совсем не видите в вашем браузере в Дельфи?
Может оно просто не работает в нем. По умолчанию WebBrowser использует режим 7 версии IE независимо от версии установленной на компе. Можно изменить это в реестре http://msdn.microsoft.com/en-us/libr...wser_emulation
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
28.07.2016, 13:42 | #9 |
Пользователь
Регистрация: 27.07.2016
Сообщений: 23
|
Дело в том, что я не планирую перегонять данные через WebBrowser. Использую его только для наглядности во время разработки. Данные мне нужны в текстовом виде, чтобы распарсить их и сохранить в своей базе данных. Т.е. моя программа будет показывать историю моей игры в табличном виде (взятую из БД), а не в виде HTML. Скажите пожалуйста, можно как-нибудь получить эти динамические данные без компонента WebBrowser?
|
28.07.2016, 13:51 | #10 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
для этого WebBrowser не нужен
берите синапс или инди или .. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Доступ к данным потока. | Landgraf132 | C# (си шарп) | 6 | 26.10.2015 13:02 |
Доступ к памяти другой программы | BaronTreep | Win Api | 10 | 31.05.2009 07:16 |
Как получить доступ к данным | kiber0net0 | Помощь студентам | 2 | 03.09.2008 08:14 |
Доступ к данным | buk | Microsoft Office Excel | 2 | 11.07.2007 09:44 |