Текущий архив: 2007.04.08;
Скачать: CL | DM;
Вниз
Delphi получить html код по заданному URL Найти похожие ветки
← →
adamst © (2007-03-02 12:29) [0]проблема така надобно получить текст, в смысле html код заданной страницы из интернета
← →
adamst © (2007-03-02 12:43) [1]вот примерчик... но работает криво... у меня тока с локально сайта тока получилось снять код 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;
← →
Dmitrij_K (2007-03-02 12:47) [2].Get сам connect делает
Достаточно
string := idhttp.Get("http://www.ru");
+ см. UrlDownloadFile()
← →
adamst © (2007-03-02 12:50) [3]спасибо... похоже ты прав... закоментил IdHTTP1.Connect; вроде что то начало получатся.....
← →
adamst © (2007-03-02 12:51) [4]Стоять UrlDownloadFile() это где смотреть... что такое?!.... колись...
← →
Dmitrij_K (2007-03-02 12:52) [5]
> adamst © (02.03.07 12:51) [4]
>
> Стоять UrlDownloadFile() это где смотреть... что такое?!
> .... колись...
google знает
Ж)
← →
adamst © (2007-03-02 13:10) [6]эххх.... не совсем то что надо... на странице скрипт выводит www.gismeteo.ru/towns/27962.htm интересующюю часть .... а спомощью компоненты idhttp это не выполнятеся, конкретно мне надо на странице таблицу с прогнозом погоды... скопировать из html и сунуть в свою страницу этот код...
← →
adamst © (2007-03-02 13:49) [7]Еще разок рабочий код... но он тупо скачивает 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:58) [8]с компоненты WebBrowser1 как получить код html или сохранить html в файл
← →
Плохиш © (2007-03-02 15:17) [9]
> adamst © (02.03.07 13:58) [8]
sHTML := (WebBrowser1.Document as IHTMLDocument2).body.innerHTML ;
← →
adamst © (2007-03-02 15:34) [10]IHTMLDocument2 какую библиотеку надо подключить чтобы не ругался на этот тип переменных?!
← →
Плохиш © (2007-03-02 15:36) [11]mshtml
← →
adamst © (2007-03-02 15:36) [12]ведь мне надо будет описать переменную
Var sHTML : IHTMLDocument2;
[Error] Unit1.pas(60): Undeclared identifier: "IHTMLDocument2"
← →
adamst © (2007-03-02 15:43) [13]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;
выдает ошибку.... помогите
← →
easy © (2007-03-02 17:42) [14]http://www.swissdelphicenter.ch/torry/showcode.php?id=1112
← →
adamst © (2007-03-05 16:19) [15]спасибо 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.
← →
Нуб (2007-03-05 16:26) [16]а че ты на формкриэйт вызываешь процедуру батон клик а просто без батон кликов ? :) и на формшоу делаешь клоуз , я ща лусну со смеху
← →
adamst © (2007-03-12 11:26) [17]Нуб (05.03.07 16:26) [16]
а че ты на формкриэйт вызываешь процедуру батон клик а просто без батон кликов ? :) и на формшоу делаешь клоуз , я ща лусну со смеху
Согласен не красиво... если не разобратся, то чуш полная! но работает... смысл в том что бы когда ворма покажется, то весь код уже выполнится, и страница html сформируется .... вот программа и закрывается... а запускается она по расписанию в планировщике... я ее даже и не вижжу...
← →
DiamondShark © (2007-03-14 16:28) [18]Завтра гисметео стукнет моча в левую пятку, и они изменят дизайн страницы.
И что?
Специально для кулибиных гисметео поставляет ту же информацию в XML
http://informer.gismeteo.ru/xml/27962_1.xml
Страницы: 1 вся ветка
Текущий архив: 2007.04.08;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.03 c