Вот прошу помощи у специалистов, как спарсить кол. лог-дисков в игре ДО? (в простом исходном коде страницы данной инфы нет.)
Как это сделать? Делаю с исходника 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;
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
________________
Слыш, спасибка есть? Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Учу Delphi,C++,PHP на [Ссылки могут видеть только зарегистрированные пользователи. ]
Да, все работает отлично. На делфи работаю первый день, пока доволен...
Только я код немного дописал для парсинга кред и ури.. Немного исходный код администраторы изменили..
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
В коде страницы Древо умений нашел значение кол-ва дисков. Я правой кнопкой щелкнул по кол-ву лог-дисков/анализировать элемент, в Огнежуке открылся код с выделенными строчками элемента. Дерзай) Если что - мне самому интересно, как оттуда изъять
________________
Слыш, спасибка есть? Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Учу Delphi,C++,PHP на [Ссылки могут видеть только зарегистрированные пользователи. ]
lolwut98, парсера не будет )) Мне же нужно хотя бы научится, сегодня только скачал делфи... А парсеров реально мало
Цитата:
Сообщение от =Kostanakis=
В коде страницы Древо умений нашел значение кол-ва дисков. Я правой кнопкой щелкнул по кол-ву лог-дисков/анализировать элемент, в Огнежуке открылся код с выделенными строчками элемента. Дерзай) Если что - мне самому интересно, как оттуда изъять
Да у меня в Гугл Хром тоже показывает, а в обычном Исходном коде нет такой информации, т.е. он не сможет спарсить по обычному
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Имхо,нужно DOM спарсить.Пошел курить мануалы просветленных)
________________
Слыш, спасибка есть? Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Учу Delphi,C++,PHP на [Ссылки могут видеть только зарегистрированные пользователи. ]