![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Версия Делфи?
|
|
#7
|
|||
|
|||
|
Delphi 7
другой нет под рукой похоже что не получается у idhttp1.get открыть страничку с данным адресом http://127.0.0.1:8080/statpage.html сделал чтобы показывал в мемо что скачалось одна строчка всего какая-то ошибка скорее всего, но не могу прочитать, кодировка какая-то неясная |
|
#8
|
|||
|
|||
|
может надо порт задать както
|
|
#9
|
|||
|
|||
|
а все, заработало
в свойствах idhttp1 ставил настройки прокси и забыл только в utf-8 не переводит в анси вместо букв вопросики |
|
#10
|
|||
|
|||
|
почитал про кодировки, муторно
сделал аналих по тегам, работает ну, осталось нажимать кнопку |
|
#11
|
|||
|
|||
|
и опять не получается
кнопка у меня по методу GET работает и длина ссылки получается больше 255 символов выдается ошибка что string только до 255 символов ставил Ansistring тоже самое как победить? все, победил Последний раз редактировалось harbor, 09.08.2010 в 15:53. |
|
#12
|
|||
|
|||
|
подскажите еще
как проще всего из memo получить url то есть в memo допустим у меня в него забиваются 4 строки и их надо вставить все в url в одну строку но с символами переноса %0D% |
|
#13
|
||||
|
||||
|
Memo1.Lines.Text
google://StringReplace |
|
#14
|
|||
|
|||
|
то есть мне надо найти символ переноса строки чтоли и заменить его
а если я буду делать составную строку из строк memo допустим url:=url+Memo1.Lines1[i] то в url попадут символы переноса или нет? |
|
#15
|
|||
|
|||
|
суть в том, что у меня в форме в мемо забивается ключ и его надо отправить методом Get
|