PDA

Просмотр полной версии : [Помогите!] как спарсить количество лог дисков Dark Orbit


OrBiT_DaRk
03.09.2011, 23:16
Вот прошу помощи у специалистов, как спарсить кол. лог-дисков в игре ДО? (в простом исходном коде страницы данной инфы нет.)

Как это сделать? Делаю с исходника R-A-Z-O-Rа.

procedure TForm1.Button1Click(Sender: TObject);
var Reg: TRegExpr;
Data: TStringList;
S: string;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] TId[Ссылки могут видеть только зарегистрированные и активированные пользователи]
begin
// Проверям заполнены ли поля
if (Edit1.Text = '')or(Edit2.Text = '')or(Edit3.Text = '') then
begin
ShowMessage('Заполните все поля!');
Exit;
end;
// Создаем компоненты
Reg := TRegExpr.Create; // Парсер
Data := TStringList.Create; // Строки для посылки POST запроса
HTTP := TId[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil); // HTTP
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := True; // Чтобы не выдавало ошибку 302, в Delphi 2010 не важно
// Входим в игру
Data.Clear; // Очистка не помешает ;)
Data.Add('loginForm_default_username='+Edit1.Text) ;
Data.Add('loginForm_default_password='+Edit2.Text) ;
Data.Add('loginForm_default_login_submit=Вход');
try
S := [Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Data);
except
ShowMessage('Ошибка при посылке данных!');
Reg.Free;
Data.Free;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
// Проверяем, правильны ли данные?
if Pos('Выбор сервера',S) = 0 then
begin
ShowMessage('Неверные данные!');
Reg.Free;
Data.Free;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
// Выбираем сервер
Reg.Expression := '"[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+Edit3.Text+'\.darkorbit\.bigpoint\.com/GameAPI\.php\?req=(.*?)"';
if Reg.Exec(S) then
begin
try
S := [Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+Edit3.Text+'.darkorbit.bigpoint.com/GameAPI.php?req='+Reg.Match[1]);
S := [Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+Edit3.Text+'.darkorbit.bigpoint.com/indexInternal.es?action=internalStart');
except
ShowMessage('Ошибка при запросе выбора сервера!');
Reg.Free;
Data.Free;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
// Сервер выбрали, проверяем данные
if Pos('<title>[Ссылки могут видеть только зарегистрированные и активированные пользователи]>',S) <> 0 then
begin
Reg.Expression := '<div class="userInfo_left fliess10px-white">Ник:</div><div class="userInfo_right">(.*?)</div>';
if Reg.Exec(S) then ListBox1.Items.Add('Ник: '+Reg.Match[1]);
Reg.Expression := '<div class="userInfo_left fliess10px-white">Сервер:</div><div class="userInfo_right">(.*?)</div>';
if Reg.Exec(S) then ListBox1.Items.Add('Сервер: '+Reg.Match[1]);
Reg.Expression := '<div class="userInfo_left fliess10px-white">Ранг:</div><div class="userInfo_right"><img src="(.*?)" style="vertical-align: baseline;"> (.*?)</div>';
if Reg.Exec(S) then ListBox1.Items.Add('Ранг: '+Reg.Match[2]);
Reg.Expression := '<div class="userInfo_left fliess10px-white">Премиум:</div><div class="userInfo_right">(.*?)</div>';
if Reg.Exec(S) then ListBox1.Items.Add('Премиум: '+Reg.Match[1]);
Reg.Expression := '<div class="userInfo_left fliess10px-white">Компания:</div><div class="userInfo_right">(.*?)</div>';
if Reg.Exec(S) then ListBox1.Items.Add('Компания: '+Reg.Match[1]);
// Достаточно, теперь вытащим другую инфу
Reg.Expression := 'cred=(.*?)&amp;xcred=(.*?)&amp';
if Reg.Exec(S) then ListBox1.Items.Add('Кредитов: '+Reg.Match[1]+' | Уридиума: '+Reg.Match[2]);
ListBox1.items.Add('Информация загружена!');
end else
begin
ShowMessage('Ошибка при входе на выбранный сервер!');
Reg.Free;
Data.Free;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
end else
begin
ShowMessage('Неудачный выбор сервера!');
Reg.Free;
Data.Free;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
// Уничтожаем компоненты
Reg.Free;
Data.Free;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end;

=Kostanakis=
03.09.2011, 23:18
У тебя входит через его исходник?

OrBiT_DaRk
03.09.2011, 23:24
Да, все работает отлично. На делфи работаю первый день, пока доволен...
Только я код немного дописал для парсинга кред и ури.. Немного исходный код администраторы изменили..

=Kostanakis=
03.09.2011, 23:27
В коде страницы Древо умений нашел значение кол-ва дисков. Я правой кнопкой щелкнул по кол-ву лог-дисков/анализировать элемент, в Огнежуке открылся код с выделенными строчками элемента. Дерзай) Если что - мне самому интересно, как оттуда изъять

OrBiT_DaRk
03.09.2011, 23:31
lolwut98, парсера не будет )) Мне же нужно хотя бы научится, сегодня только скачал делфи... А парсеров реально мало :D


В коде страницы Древо умений нашел значение кол-ва дисков. Я правой кнопкой щелкнул по кол-ву лог-дисков/анализировать элемент, в Огнежуке открылся код с выделенными строчками элемента. Дерзай) Если что - мне самому интересно, как оттуда изъять
Да у меня в Гугл Хром тоже показывает, а в обычном Исходном коде нет такой информации, т.е. он не сможет спарсить по обычному

=Kostanakis=
03.09.2011, 23:37
Имхо,нужно DOM спарсить.Пошел курить мануалы просветленных)

R-A-Z-O-R
13.09.2011, 05:38
А посмотри код элемента древо умений, и что происходит при нажатии на него ;)

blad56
14.09.2011, 05:11
Reg.Expression := '"[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+Edit3.Text+'\.darkorbit\.bigpoint\.com/GameAPI\.php\?req=(.*?)"';
ты не там парсишь. там ооочень длинная строка, в которую нужно вставлять сид;)

lolwut98
14.09.2011, 16:35
в которую нужно вставлять сид
orly? а я как-то без этого обходился