|
как спарсить количество лог дисков Dark Orbit - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
03.09.2011, 23:16
|
#1
|
|
|
|
Старший сержант
|
Регистрация: 31.05.2011
Сообщений: 201
Популярность: 24012
Сказал(а) спасибо: 1,360
Поблагодарили 478 раз(а) в 251 сообщениях
|
как спарсить количество лог дисков Dark Orbit
Вот прошу помощи у специалистов, как спарсить кол. лог-дисков в игре ДО? (в простом исходном коде страницы данной инфы нет.)
Как это сделать? Делаю с исходника R-A-Z-O-Rа.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var Reg: TRegExpr;
Data: TStringList;
S: string;
HTTP: TIdHTTP;
begin
// Проверям заполнены ли поля
if (Edit1.Text = '')or(Edit2.Text = '')or(Edit3.Text = '') then
begin
ShowMessage('Заполните все поля!');
Exit;
end;
// Создаем компоненты
Reg := TRegExpr.Create; // Парсер
Data := TStringList.Create; // Строки для посылки POST запроса
HTTP := TIdHTTP.Create(nil); // HTTP
HTTP.HandleRedirects := 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 := HTTP.Post('http://darkorbit.bigpoint.com/?locale=ru&aid=0',Data);
except
ShowMessage('Ошибка при посылке данных!');
Reg.Free;
Data.Free;
HTTP.Free;
Exit;
end;
// Проверяем, правильны ли данные?
if Pos('Выбор сервера',S) = 0 then
begin
ShowMessage('Неверные данные!');
Reg.Free;
Data.Free;
HTTP.Free;
Exit;
end;
// Выбираем сервер
Reg.Expression := '"http://'+Edit3.Text+'\.darkorbit\.bigpoint\.com/GameAPI\.php\?req=(.*?)"';
if Reg.Exec(S) then
begin
try
S := HTTP.Get('http://'+Edit3.Text+'.darkorbit.bigpoint.com/GameAPI.php?req='+Reg.Match[1]);
S := HTTP.Get('http://'+Edit3.Text+'.darkorbit.bigpoint.com/indexInternal.es?action=internalStart');
except
ShowMessage('Ошибка при запросе выбора сервера!');
Reg.Free;
Data.Free;
HTTP.Free;
Exit;
end;
// Сервер выбрали, проверяем данные
if Pos('<title>www.DarkOrbit.com</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=(.*?)&xcred=(.*?)&';
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;
HTTP.Free;
Exit;
end;
end else
begin
ShowMessage('Неудачный выбор сервера!');
Reg.Free;
Data.Free;
HTTP.Free;
Exit;
end;
// Уничтожаем компоненты
Reg.Free;
Data.Free;
HTTP.Free;
end;
________________
|
|
|
03.09.2011, 23:18
|
#2
|
|
|
|
Разведчик
|
Регистрация: 31.07.2011
Сообщений: 30
Популярность: 88
Сказал(а) спасибо: 14
Поблагодарили 7 раз(а) в 7 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
У тебя входит через его исходник?
|
|
|
Пользователь сказал cпасибо:
|
|
03.09.2011, 23:24
|
#3
|
|
|
|
Старший сержант
|
Регистрация: 31.05.2011
Сообщений: 201
Популярность: 24012
Сказал(а) спасибо: 1,360
Поблагодарили 478 раз(а) в 251 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
Да, все работает отлично. На делфи работаю первый день, пока доволен...
Только я код немного дописал для парсинга кред и ури.. Немного исходный код администраторы изменили..
________________
|
|
|
03.09.2011, 23:27
|
#4
|
|
|
|
Разведчик
|
Регистрация: 31.07.2011
Сообщений: 30
Популярность: 88
Сказал(а) спасибо: 14
Поблагодарили 7 раз(а) в 7 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
В коде страницы Древо умений нашел значение кол-ва дисков. Я правой кнопкой щелкнул по кол-ву лог-дисков/анализировать элемент, в Огнежуке открылся код с выделенными строчками элемента. Дерзай) Если что - мне самому интересно, как оттуда изъять
|
|
|
03.09.2011, 23:31
|
#5
|
|
|
|
Старший сержант
|
Регистрация: 31.05.2011
Сообщений: 201
Популярность: 24012
Сказал(а) спасибо: 1,360
Поблагодарили 478 раз(а) в 251 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
________________
|
|
|
03.09.2011, 23:37
|
#6
|
|
|
|
Разведчик
|
Регистрация: 31.07.2011
Сообщений: 30
Популярность: 88
Сказал(а) спасибо: 14
Поблагодарили 7 раз(а) в 7 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
Имхо,нужно DOM спарсить.Пошел курить мануалы просветленных)
|
|
|
13.09.2011, 05:38
|
#7
|
|
|
|
Разведчик
|
Регистрация: 31.05.2011
Сообщений: 6
Популярность: 194
Сказал(а) спасибо: 9
Поблагодарили 25 раз(а) в 12 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
А посмотри код элемента древо умений, и что происходит при нажатии на него
________________
Принимаю программы на заказ. Скайп: uran-1997
|
|
|
14.09.2011, 05:11
|
#8
|
|
|
|
Старший сержант
|
Регистрация: 03.02.2011
Сообщений: 178
Популярность: 2713
Сказал(а) спасибо: 128
Поблагодарили 230 раз(а) в 110 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
|
|
|
14.09.2011, 16:35
|
#9
|
|
|
|
Пехотинец
|
Регистрация: 16.07.2011
Сообщений: 97
Популярность: 2528
Сказал(а) спасибо: 61
Поблагодарили 336 раз(а) в 61 сообщениях
|
Re: как спарсить количество лог дисков Dark Orbit
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 15:54.
|
|