![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
хочу написать программу, которая считывает число со статичной страницы
локальный сервер, страница со статистикой соединений) и если число соединений превышает допустим 200, то нажимает кнопку подскажите какие компоненты использовать, как искать число на странице? там текст такой есть на страничке в таблице"количество соединений xxx" |
|
#2
|
||||
|
||||
|
1. Стягиваем страницу через IdHTTP.Get
2. Парсим с помощью pos, copy 3. Находим число 4. "Нажимаем на кнопку" - или делаем нужный запрос через idHTTP, если "кнопка" - объект на HTML-странице, либо ButtonN.Click, если кнопка на форме. |
|
#3
|
|||
|
|||
|
после лазания по форуму
нашел примерно похожее пытаюсь переделать под себя пока вот так, по идее должна вывести в лейбл данные после надписи текст(условно) повесил на кнопку срабатывание таймера но выводит 10 символов с начала документа Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, IdCookieManager, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Label1: TLabel;
Timer1: TTimer;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
http:TidHttp;
CooM:TidCookieManager;
data:TStringList;
page1, name1:String;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
data :=TStringList.Create;
http:=TIdHTTP.Create(Self);
http.AllowCookies:=true;
CooM:=TidCookieManager.Create(http);
http.CookieManager:=CooM;
http.HandleRedirects:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
data.Free;
Coom.Free;
http.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
name1:='';
page1 := http.Get('http://yandex.ru');
// page1 := Utf8ToAnsi(page1); // это для перевода из utf-8 в windows-1251
// ищим нужную позицию в тексте, name1:=copy(page1,Pos('текст">',page1)+length('текст">'),10);
Label1.Caption := name1;
// Form1.Caption := name1;
end;
end.Последний раз редактировалось harbor, 08.08.2010 в 07:28. |
|
#4
|
|||
|
|||
|
а нет, все заработало, исправил косячки
попробую дальше копать надо вытащить данные между > и < Последний раз редактировалось harbor, 08.08.2010 в 07:42. |
|
#5
|
|||
|
|||
|
не получается получить число 121 из html
Код:
Обслуживается соединений </td><td class="db" align="center">121</td></tr><tr><td class="db" width="30%"> таким кодом Код:
page1:=idhttp1.get('http://127.0.0.1:8080/statpage.html');
page1 := Utf8ToAnsi(page1);
i:=ansipos('соединений', page1);
delete(page1, 1, i);
i:=ansipos('align', page1);
delete(page1, 1, i);
i:=ansipos('>', page1);
delete(page1, 1, i);
i:=ansipos('<', page1);
s1:=copy(page1, 1, i-1);
Label1.Caption := '('+s1+')';страница в utf-8 то есть в заголовке стоит encoding="utf-8" не понимаю почему не работает проверял на других страничках в инете, все нормально берет все что между тегами а тут ничего не выдергивает вообще |
|
#6
|
||||
|
||||
|
Версия Делфи?
|