Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2007, 17:12   #1
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию Как получить HTML код?

Здравствуйте. Как получить со странички HTML код? Только код 1-й страницы и все?

Последний раз редактировалось Kukkk; 21.10.2007 в 17:20.
Kukkk вне форума Ответить с цитированием
Старый 21.10.2007, 22:44   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
Смущение Работа с WinInet, Демо получения HTML кода страницы

Цитата:
Сообщение от Kukkk Посмотреть сообщение
Здравствуйте. Как получить со странички HTML код? Только код 1-й страницы и все?
Код:
////////////////////////////////////////////////////////////////////////////////
//
//  Демо получения HTML кода страницы
//  Автор: Александр (Rouse_) Багель
//  © Fangorn Wizards Lab 1998 - 2003
//  19 января 2003 

unit Unit1;
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Wininet, StdCtrls;

const
HTTP_PORT = 80;
CRLF = #13#10;
Header = 'Content-Type: application/x-www-form-urlencoded' + CRLF;

type
TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   Button2: TButton;
   Memo2: TMemo;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function DelHttp(URL: String): String;
begin
if Pos('http://', URL) > 0 then Delete(Url, 1, 7);
Result := Copy(Url, 1, Pos('/', Url) - 1);
if Result = '' then Result := URL + #0;
end;

function GetUrl(const URL: String): String;
var
FSession, FConnect, FRequest: HINTERNET;
FHost, FScript, SRequest: String;
Ansi: PAnsiChar;
Buff: array [0..1023] of Char;
BytesRead: Cardinal;
Res, Len: DWORD;
begin
Result := '';
// Небольшой парсинг
// вытаскиваем имя хоста и параметры обращения к скрипту
FHost := DelHttp(Url);
FScript := Url;
Delete(FScript, 1, Pos(FHost, FScript) + Length(FHost));
//FScript := FHost + '/' +FScript;
// Инициализируем WinInet
FSession := InternetOpen('DMFR', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if not Assigned(FSession) then Exit;
try
// Попытка соединения с сервером
FConnect := InternetConnect(FSession, PChar(FHost), HTTP_PORT, nil,
'HTTP/1.0', INTERNET_SERVICE_HTTP, 0, 0);
if not Assigned(FConnect) then Exit;
try
// Подготавливаем запрос страницы
Ansi := 'text/*';
FRequest := HttpOpenRequest(FConnect, 'GET', PChar(FScript), 'HTTP/1.1',
nil, @Ansi, INTERNET_FLAG_RELOAD, 0);
if not Assigned(FConnect) then Exit;
try
// Добавляем заголовки
if not (HttpAddRequestHeaders(FRequest, Header, Length(Header),
HTTP_ADDREQ_FLAG_REPLACE or
HTTP_ADDREQ_FLAG_ADD or
HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA)) then Exit;
// Проверяем запрос:
Len := 0;
Res := 0;
SRequest := ' ';
HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or
HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], Len, Res);
if Len > 0 then
begin
SetLength(SRequest, Len);
HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or
HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], Len, Res);
end;
Form1.Memo2.Lines.Text := SRequest;
//Отправляем запрос
if not (HttpSendRequest(FRequest, nil, 0, nil, 0)) then Exit;
// Получаем ответ 
FillChar(Buff, SizeOf(Buff), 0);
repeat
Result := Result + Buff;
FillChar(Buff, SizeOf(Buff), 0);
InternetReadFile(FRequest, @Buff, SizeOf(Buff), BytesRead);
until BytesRead = 0; 
finally
InternetCloseHandle(FRequest);
end;
finally
InternetCloseHandle(FConnect);
end;
finally
InternetCloseHandle(FSession);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := GetUrl('http://forum.sources.ru/index.php?showforum=14');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Text := GetUrl('http://forum.sources.ru/');
end;
end.
P.S. Или так
Код:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
NMHTTP1.Get('www.programmersforum.ru'); 
memo1.Text := NMHTTP1.Body 
end;
Плюс - это два минуса, умело прилаженные друг к другу
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"

Последний раз редактировалось AlDelta; 21.10.2007 в 22:50.
AlDelta вне форума Ответить с цитированием
Старый 21.10.2007, 23:12   #3
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию Работа с INDY, получения HTML кода страницы

Цитата:
RichEdit1.Text:=http.Get(ComboBox1. text);
ComboBox1.text - это юрл

P.S. Раздел хоть немного читал? тем 10 таких.
Alar вне форума Ответить с цитированием
Старый 22.10.2007, 16:17   #4
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию

Извеняюсь,если не нашел таеое,но оно уже было,спасибо AlDelta!
Kukkk вне форума Ответить с цитированием
Старый 22.10.2007, 16:28   #5
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию

А В дельфи 2006 есть компанент NMHTTP?
Kukkk вне форума Ответить с цитированием
Старый 22.10.2007, 16:42   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Вкладка Indy clients
Компонент Httpclient
Метод get
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.10.2007, 23:13   #7
Kukkk
Форумчанин
 
Регистрация: 28.06.2007
Сообщений: 123
По умолчанию

Спасибо! Пишу Рсс ридилку с особыми функциями,но вот подумал что я наверно не первый кто ее пишет,ни у кого нету готового исходничка для дельфи 2006-ки?
Kukkk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить имя файла Crazyman Работа с сетью в Delphi 4 11.07.2008 00:47
Получить HTML код страницы в Delphi Job Работа с сетью в Delphi 3 15.08.2007 11:29
Нужно получить html код страницы NEOkill Работа с сетью в Delphi 2 01.03.2007 16:49