0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 55
1

Надо спарсить Java код, полную статистику игры

09.01.2020, 23:50. Показов 774. Ответов 6

Здравствуйте коллеги!

Есть статистика игры, предположим вот эта:
ссылка на статистику игры

Надо спарсить Java код, полную статистику игры


.. задача спарсить полностью всю статистику.
Однако получается спарсить только кусочек выделенный зелёным рямоугольником.
Кусок же выделенный красным прямоугольником спарсить неполучается никак (ни штатным WebBrowser1 ни Chromium-ом).
Как я не крутил и через DocumentComplete пробовал... всёравно неполучается.
-----------------------------
Вот пример того как я пытаюсь, но это уже мудрёно, я пробовал и простые варианты:
Delphi
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls, MSHTML, Vcl.OleCtrls, SHDocVw, cefvcl;
 
type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    mmo1: TMemo;
    btn1: TButton;
    btn2: TButton;
    procedure WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  WB_Doc: IHTMLDocument2;
  WB_HTMLWindow: IHTMLWindow2;
 
implementation
 
{$R *.dfm}
 
function GetHtml(doc: IHtmlDocument2): string;
var
  iDisp: IDispatch;
  iCollection: IHTMLElementCollection;
begin
  result := '';
  iCollection := doc.all.Tags('HTML') as IHTMLElementCollection;
  iDisp := iCollection.item(0, 0);
  result := (iDisp as IHTMLElement).outerHTML;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('https://www.scoreboard.com/ru/match/nP4hlZEh/#h2h;overall');
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
  Mmo1.Lines.Add(GetHtml(WB_Doc));
end;
 
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
begin
  WebBrowser1.Document.QueryInterface(IHTMLDocument2, WB_Doc);
  WB_HTMLWindow := WB_Doc.parentWindow;
  if not Assigned(WB_HTMLWindow) then
    showmessage('авот фих тебе')
  else
    showmessage(' все OK');
end;
end.

Помогите пожалуйста. Спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2020, 23:50
Ответы с готовыми решениями:

Надо создать игры на java (ШАБЛОН) Жанр: фэнтези, например Эльфы, вампиры, тролли и т.д
ПОЖАЛУЙСТА ПОМОГИТЕЕЕЕ --- Надо создать игры на java (ШАБЛОН) Жанр:фэнтези, например Эльфы ,...

Создание логической игры Шахматы. Надо разделить код на классы
Надо отделить логику игры в отдельный класс. А так же что бы в текст бокс выводился сделанный ход,...

Как декомпилировать код java игры?
есть java игра можно ли де компилировать код и поменять некоторые веши и потом компилировать...

Надо переписать готовый код JAVA на --> PHP язык (задачи)
1, Два бандита import java.util.*; import java.io.*; import java.math.BigInteger; public...

6
882 / 584 / 178
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
10.01.2020, 04:16 2
Цитата Сообщение от Ltybcrf Посмотреть сообщение
Надо спарсить Java код, полную статистику игры
эм... У вас HTML-страница. Возможно с JavaScript. Но в итоге всё равно вся информация в HTML DOM. А вот уж "Java-кода" там точно нету.
Цитата Сообщение от Ltybcrf Посмотреть сообщение
Есть статистика игры, предположим вот эта: ссылка на статистику игры
Не открывается. Вернее крутится "Loading..." и усё, больше ничего и никак.

Добавлено через 1 минуту
Цитата Сообщение от Ltybcrf Посмотреть сообщение
и через DocumentComplete пробовал...
Данное событие вроде как обозначает окончание загрузки. Только может всей страницы. А может фрейма (если есть). Каждого. Может ещё чего. А может и вообще не выстрелить...
Странное событие - вроде и им надо пользоваться, по логике-то, а оно вон оно как что...

Добавлено через 2 минуты
Помимо этого - подгружающиеся данные вполне могут начать подгружаться как раз тоже при этом же событии, то есть на момент события - ещё не быть подгруженными.
Тогда выходом может быть некоторое ожидание в секундах.

Добавлено через 58 секунд
о... А теперь ещё попробовал и загрузилось. И тоже ой не сразу. Вероятно вам нужен этот?:
HTML5
1
<div id="tab-h2h-overall" ... >
Добавлено через 2 минуты
Ну для начала давайте может типа такое опробуем:
Delphi
1
2
3
4
5
6
7
8
9
10
Procedure TForm1.Button1Click(Sender: TObject);
Var TimeOut: TDateTime;
Begin
WebBrowser1.Navigate('https://www.scoreboard.com/ru/match/nP4hlZEh/#h2h;overall');
TimeOut := IncSecond(Now(), 20);
While (Now() < TimeOut) Do
  Application.ProcessMessages();
Memo1.Lines.Add(WebBrowser1.OleObject.Document.documentElement.outerHTML);
Memo2.Lines.Add(WebBrowser1.OleObject.Document.getElementById('tab-h2h-overall').outerHTML);
End;
Добавлено через 1 минуту
Модуль DateUtils понадобится.
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 55
10.01.2020, 19:10  [ТС] 3
За помощь спасибо большое, мне известна функция DOM.
Проблема похоже с нехватающим чемто ...

Надо спарсить Java код, полную статистику игры


И хромом и штатнім WebBrowser1 говорит что не поддерживает браузер нужные функции ...
Пытаемся "ехать дальше".

Как нам побороть эту проблему?
Помогите пожалуйста добить єтот вопрос!
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 55
23.01.2020, 12:40  [ТС] 4
Ребята неужели у Вас парсится код фрейам статистики????
я и хромом пробую и обычным браузером
0
32 / 26 / 7
Регистрация: 18.10.2019
Сообщений: 187
23.01.2020, 15:19 5
Парсить какой-то сайт - довольно редкая задача, как правило если есть необходимость получать данные с какого-то веб-ресурса, то вебресурс дает api для этого. Если же такого нет, а очень хочется, то запускаем http-анализатор и через idHttp делаем что нам угодно, а WebBrowser для подобного подходит плохо.
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 55
23.01.2020, 20:55  [ТС] 6
Цитата Сообщение от Мудрый Ижик Посмотреть сообщение
Парсить какой-то сайт - довольно редкая задача, как правило если есть необходимость получать данные с какого-то веб-ресурса, то вебресурс дает api для этого. Если же такого нет, а очень хочется, то запускаем http-анализатор и через idHttp делаем что нам угодно, а WebBrowser для подобного подходит плохо.
Подскажи каким именно анализатором?
И пошагово как это в делфи реализовать я не нуб .. но парсить учусь только
0
3104 / 1838 / 598
Регистрация: 29.05.2013
Сообщений: 8,044
23.01.2020, 21:17 7
Я пользовался раньше HTTP Analyzer Full Edition 7.6.4.508. Базовый функции простые, активировал его и в браузере идешь на сайт, делаешь там все что нужно, а HTTPAnalyzer все что делается в браузере в этот период записывает в виде http-команд. Изучаете запись после остановки HTTPAnalyzer и делаете то-же самое, но уже средствами Дельфи - вот и все.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2020, 21:17
Помогаю со студенческими работами здесь

Расшифровать код который выдал лаунчер игры на Java
стало интересно расшифровать код который выдавал лаунчер игры на java, в криптографии вообще не...

Sniper Elite v.2 ( Удалить статистику игры )
Всем здравия и приятного времечка. Недавно прошел вышеупомянутую игру. Естественно...

Как записать статистику игры (победы компьютера, игрока и ничью) в txt-файл?
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;windows.h&gt; #include &lt;time.h&gt; using namespace...

Как получить статистику выполнения SQL-запросов на Java?
Я запускаю запросы из IntelijIdea. Мне нужно знать, сколько времени прошло, чтобы выполнить запрос...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru