![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delphi получить html код по заданному URL [D7]
adamst © (2007-03-02 12:29:00)проблема така надобно получить текст, в смысле html код заданной страницы из интернета
DiamondShark (2007-03-14 16:28:00) [1]Завтра гисметео стукнет моча в левую пятку, и они изменят дизайн страницы.
И что?
Специально для кулибиных гисметео поставляет ту же информацию в XML
http://informer.gismeteo.ru/xml/27962_1.xml
adamst (2007-03-12 11:26:00) [2]Нуб (05.03.07 16:26) [16]
а че ты на формкриэйт вызываешь процедуру батон клик а просто без батон кликов ? :) и на формшоу делаешь клоуз , я ща лусну со смеху
Согласен не красиво... если не разобратся, то чуш полная! но работает... смысл в том что бы когда ворма покажется, то весь код уже выполнится, и страница html сформируется.... вот программа и закрывается... а запускается она по расписанию в планировщике... я ее даже и не вижжу...
Нуб (2007-03-05 16:26:00) [3]а че ты на формкриэйт вызываешь процедуру батон клик а просто без батон кликов ? :) и на формшоу делаешь клоуз , я ща лусну со смеху
adamst (2007-03-05 16:19:00) [4]спасибо easy если бы раньше увидел то сделал бы так.... но сейчас я реализовал возможность закачки и подправки следующим образом... суть программы с gismeteo.ru скачать погоду для моего города и выложить на локальном сайте... т.к. закачивается только текс, то трафик сжирается минимума вот мой слегка кривоватый код.... некогда было мудрить...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls,StrUtils, HTTPApp, OleCtrls, SHDocVw, ComCtrls,
ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
IdHTTP1: TIdHTTP;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function wget(url: string): string;
var s: string;
i: integer;
begin
if LeftStr(url, 7) = 'http://' then Delete(url, 1, 7);
s := Copy(url, 1, Pos('/', url) - 1);
if Pos('/', url) = 0 then s := url;
Result := ''; with Form1 do
begin
IdHTTP1.Host := s;
// IdHTTP1.Host := ' http://www.gismeteo.ru';
try
// IdHTTP1.Connect;
try
Result := IdHTTP1.Get('http://' + url);
except
end;
finally
IdHTTP1.Disconnect;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var sHTML: WideString;
i: integer;
p: integer;
s,s1: WideString;
st : string;
begin
//<script language=JavaScript> var frc='<table border=0 cellpadding=1 cellspacing=2 width="100%"><tr><td colspan=8>
memo1.text:=wget('www.gismeteo.ru/towns/27962.htm');
memo1.Lines.SaveToFile('d:\1.htm');
s1:='';
For i:=0 to Memo1.Lines.Count do
Begin
s:=memo1.Lines[i];
p:=1;
While p>0 Do
Begin
P:=pos(#13,s);
If P>0 Then Delete(s, P,1);
End;
s1:=s1+s;
End;
//memo2.text:=s1;
p:=pos('<script language=JavaScript> var frc', s1);
i:=P;
For i:=P To Length(s1) do
Begin
st:=Copy(s1,i,18);
If st='</td></tr></table>' then Break;
End;
//Получение таблицы где находится данные о погоде за 3 дня
s:=Copy(s1,p+38,(i-p+18-38));
//Удаление не нужной информации с таблицы... ссылки, заметочки и тп...
p:=1;
While p>0 do
Begin
p:=pos(' http://img.gismeteo.ru/images/',s);
if P>0 then
Begin
st:=Copy(s,p,23);
Delete(s,p,23);
End;
End;
p:=pos('<a target=_blank href=" http://www.gismeteo.ru">',s);
If P>0 then
Begin
st:=Copy(s,P,47);
Delete(s,P,47);
End;
i:=1;
p:=1;
While (p>0)and(i>0) Do
Begin
i:=pos('<a',s);
p:=pos('</a>',s);
If (i>0)and(p>0) Then
Begin
st:=Copy(s,i,p-i+4);
Delete(s,i,p-i+4);
End;
End;
//Подстановка в шаблон
Memo2.Lines[6]:=s;
Memo2.Lines.SaveToFile('C:\Inetpub\wwwroot\pogoda.htm');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Button1Click(Sender);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.close();
end;
end.
easy (2007-03-02 17:42:00) [5]http://www.swissdelphicenter.ch/torry/showcode.php?id=1112
adamst (2007-03-02 15:43:00) [6]procedure TForm1.Button1Click(Sender: TObject);
Var sHTML: WideString;
begin
// memo1.text:=wget('www.gismeteo.ru/towns/27962.htm');
memo1.text:=wget('www.gismeteo.ru/towns/27962.htm');
memo1.Lines.SaveToFile('d:\1.html');
form1.WebBrowser1.Navigate('d:\1.html');
sHTML := (WebBrowser1.Document as IHTMLDocument2).body.innerHTML ;
try
//WebBrowser1.ExecWB(OLECMDID_SAVE, OLECMDEXECOPT_PROMPTUSER);
except
end;
end;
выдает ошибку.... помогите
adamst (2007-03-02 15:36:00) [7]ведь мне надо будет описать переменную
Var sHTML : IHTMLDocument2;
[Error] Unit1.pas(60): Undeclared identifier: 'IHTMLDocument2'
Плохиш (2007-03-02 15:36:00) [8]mshtml
adamst (2007-03-02 15:34:00) [9]IHTMLDocument2 какую библиотеку надо подключить чтобы не ругался на этот тип переменных?!
Плохиш (2007-03-02 15:17:00) [10]
> adamst © (02.03.07 13:58) [8]
sHTML := (WebBrowser1.Document as IHTMLDocument2).body.innerHTML ;
adamst (2007-03-02 13:58:00) [11]с компоненты WebBrowser1 как получить код html или сохранить html в файл
adamst (2007-03-02 13:49:00) [12]Еще разок рабочий код... но он тупо скачивает html страничку... не ту которую вы увидите запустив ее, т.е. не измененную скриптами.... а вот в этом и заключается проблема!!!!!
function wget(url: string): string;
var s: string;
i: integer;
begin
if LeftStr(url, 7) = 'http://' then Delete(url, 1, 7);
s := Copy(url, 1, Pos('/', url) - 1);
if Pos('/', url) = 0 then s := url;
Result := ''; with Form1 do
begin
IdHTTP1.Host := s;
// IdHTTP1.Host := ' http://www.gismeteo.ru';
try
// IdHTTP1.Connect;
try
Result := IdHTTP1.Get('http://' + url);
except
end;
finally
IdHTTP1.Disconnect;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// memo1.text:=wget('www.gismeteo.ru/towns/27962.htm');
memo1.text:=wget('www.gismeteo.ru/towns/27962.htm');
memo1.Lines.SaveToFile('d:\1.html');
end;
adamst (2007-03-02 13:10:00) [13]эххх.... не совсем то что надо... на странице скрипт выводит www.gismeteo.ru/towns/27962.htm интересующюю часть .... а спомощью компоненты idhttp это не выполнятеся, конкретно мне надо на странице таблицу с прогнозом погоды... скопировать из html и сунуть в свою страницу этот код...
Dmitrij_K (2007-03-02 12:52:00) [14]
> adamst © (02.03.07 12:51) [4]
>
> Стоять UrlDownloadFile() это где смотреть... что такое?!
> .... колись...
google знает
Ж)
adamst (2007-03-02 12:51:00) [15]Стоять UrlDownloadFile() это где смотреть... что такое?!.... колись...
adamst (2007-03-02 12:50:00) [16]спасибо... похоже ты прав... закоментил IdHTTP1.Connect; вроде что то начало получатся.....
Dmitrij_K (2007-03-02 12:47:00) [17].Get сам connect делает
Достаточно
string := idhttp.Get(' http://www.ru');
+ см. UrlDownloadFile()
adamst (2007-03-02 12:43:00) [18]вот примерчик... но работает криво... у меня тока с локально сайта тока получилось снять код html
function wget(url: string): string;
var s: string;
i: integer;
begin
if LeftStr(url, 7) = 'http://' then Delete(url, 1, 7);
s := Copy(url, 1, Pos('/', url) - 1);
if Pos('/', url) = 0 then s := url;
Result := ''; with Form1 do
begin
IdHTTP1.Host := s;
// IdHTTP1.Host := ' http://www.gismeteo.ru';
try
IdHTTP1.Connect;
try
Result := IdHTTP1.Get('http://' + url);
except
end;
finally
IdHTTP1.Disconnect;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// memo1.text:=wget('www.gismeteo.ru/towns/27962.htm');
memo1.text:=wget('ya.ru');
end;