![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Не получается спарсить текст такого вида:
Код:
<td align="right"><span class="arial">Country code:</span></td>
RU (RUS)</td>Пробовал по разному, а так сайт:http://geoiptool.com/?IP= |
|
#2
|
||||
|
||||
|
Функции работы со строками
Pos - поиск подстроки в строке Copy - копирование символов из строки |
|
#3
|
|||
|
|||
|
Вообще, представленный код (html) некорректный или неполный.
Если код корректный, то можно воспользоваться парсером от Microsoft и тогда получить вирутальное дерево, в котором и искать нужную информацию. А так, можно по быстрому попробовать следующим образом: Код:
const sBeg = '<td align="right"><span class="arial">Country code:</span></td'; sEnd = '</td>'; var iStart, iEnd : Integer; sSrc, sTgt : String; begin sSrc := idHTTP.Get(...); // как ты получаешь страничку iStart := Pos(sBeg,sSrc) + Length(sBeg); iEnd := PosEx(sEnd,sSrc,iStart)-1; sTgt := Copy(sSrc,iStart,iStart-iEnd); |
|
#4
|
|||
|
|||
|
delphi 7, на PosEx ругается..
Взял функцию Код:
Function PosEx(Const SubStr, S: String; Offset: Cardinal = 1): Integer; var I,X: Integer; Len, LenSubStr: Integer; begin If Offset = 1 Then Result := Pos(SubStr, S) Else begin I := Offset; LenSubStr := Length(SubStr); Len := Length(S) - LenSubStr + 1; While I <= Len Do begin If S[i] = SubStr[1] Then begin X := 1; While (X < LenSubStr) And (S[I + X] = SubStr[X + 1]) Do Inc(X); If (X = LenSubStr) Then begin Result := I; Exit; End; End; Inc(I); End; Result := 0; End; End; Не сработало.. |
|
#5
|
||||
|
||||
|
Подключи модуль StrUtils.
|
|
#6
|
|||
|
|||
|
Ничего не спарсилось вообще.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,strutils, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
sBeg = '<td align="right"><span class="arial">Country code:</span></td';
sEnd = '</td>';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
iStart, iEnd : Integer;
sSrc, sTgt : String;
begin
sSrc := idHTTP1.Get('http://geoiptool.com/?IP=95.52.112.168'); // êàê òû ïîëó÷àåøü ñòðàíè÷êó
iStart := Pos(sBeg,sSrc) + Length(sBeg);
iEnd := PosEx(sEnd,sSrc,iStart)-1;
sTgt := Copy(sSrc,iStart,iStart-iEnd);
memo1.lines.add(sTgt);
end;
end. |