PDA

Просмотр полной версии : [Помогите!] Botva online pars


gum_classis
29.11.2011, 21:18
Помогите спарсить уровень вот кусочки кода
a:=form1.id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+form1.sCombobox1.items[form1.sCombobox1.Itemindex]+'.botva.ru/index.php');//Вот с этого запроса парсить
Красным обозначено что нужно спарсить
Вот кусок исходника
<td class="c1">
<b class="icon ico_level" title="Уровень"></b>
</td>
<td class="c2 left">Уровень </td>
<td>5 </td>
<td colspan="2"> </td>
</tr>

VeTaL_UA
29.11.2011, 22:06
Вот:
function GetLVL(s:string):string;
begin
result:=Copy(s,Pos('<td class="c2 left">Уровень </td>',s)+40,2);
end;
Использовать так:
var
s:string;
begin
s:=Id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]'); //сайт указан неверно
Label1.Caption:=GetLVL(s);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end;

Mebius
29.11.2011, 22:09
если там только русский язык, то можно заюзать ф-цию Pars(before,string,end); из интернета (сам ее активно использую)

Pars('<td class="c2 left">Уровень </td>'+#13#10+'<td>',Input,'</td>'+#13#10+'<td colspan="2">');

или же регулярным выраженем, к сожалению их я немного подзабыл, но рекомендую прогу RegexBuddy для составления регулярок.


Вот:
function GetLVL(s:string):string;
begin
result:=Copy(s,Pos('<td class="c2 left">Уровень </td>',s)+40,2);
end;
Использовать так:
var
s:string;
begin
s:=Id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]'); //сайт указан неверно
Label1.Caption:=GetLVL(s);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end;
слишком далеко пасишь имхо. достаточно с слова "Уровень"

VeTaL_UA
29.11.2011, 22:13
с слова "Уровень"
Слово уровень повторяется в исходном коду два раза, так что как раз ;)

<td class="c1">
<b class="icon ico_level" title="Уровень"></b>
</td>
<td class="c2 left">Уровень </td>
<td>5 </td>
<td colspan="2"> </td>
</tr>

Mebius
29.11.2011, 22:15
Слово уровень повторяется в исходном коду два раза, так что как раз ;)



не знал, но регулярка вернее всего, правда она проц сожрет) особенно при из изобилии))) ;)

хотя в твоей ф-ции мне всегда один человек говори "фигня в логике!"

для исключения ошибки лучше по другому немного:


var
p:integer;
begin
p:=;
result:='Fail';
if p>0 then
result:=Copy(s,Pos('<td class="c2 left">Уровень </td>',s)+40,2);
end;