Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.05.2013, 14:42
bddelphi bddelphi вне форума
Прохожий
 
Регистрация: 28.01.2013
Сообщения: 15
Репутация: 10
По умолчанию Гиперссылки на интернет-странице

Здравствуйте! Очень нужна ваша помощь. У меня есть адрес сайта
http://www.plavsk.tulobl.ru/administ...rk/norm/texts/
Мне в форме delphi нужно получить все гиперссылки с этого сайта (чтоб они остались рабочими).



P.S. Пришла в голову мысль получить все теги со страницы. Вывела их в memo, а что с ними делать дальше не знаю.


Подскажите кто знает. пожалуйста!!!
Ответить с цитированием
  #2  
Старый 20.05.2013, 14:47
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от bddelphi
Здравствуйте! Очень нужна ваша помощь. У меня есть адрес сайта
http://www.plavsk.tulobl.ru/administ...rk/norm/texts/
Мне в форме delphi нужно получить все гиперссылки с этого сайта (чтоб они остались рабочими).



P.S. Пришла в голову мысль получить все теги со страницы. Вывела их в memo, а что с ними делать дальше не знаю.
Можно использовать например стандартный компонент TWebBrowser - с его помощью легко скачивать страницы и получать с этих страниц все гиперссылки.
Ответить с цитированием
  #3  
Старый 20.05.2013, 14:55
bddelphi bddelphi вне форума
Прохожий
 
Регистрация: 28.01.2013
Сообщения: 15
Репутация: 10
По умолчанию

Да, так тоже пробовала. Вывела всю страницу в TWebBrowser, а как оттуда получить гиперссылки?
Ответить с цитированием
  #4  
Старый 20.05.2013, 15:03
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от bddelphi
Да, так тоже пробовала. Вывела всю страницу в TWebBrowser, а как оттуда получить гиперссылки?
Пример:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  col: IHTMLElementCollection;
  i: Integer;
begin
  col:=(WebBrowser1.Document as IHTMLDocument2).all.tags('A') as IHTMLElementCollection;
  for i := 0 to col.length-1 do
  begin
    Memo1.Lines.Add((col.item(i, EmptyParam) as IHTMLAnchorElement).href);
  end;
end;
Ответить с цитированием
  #5  
Старый 20.05.2013, 15:06
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от bddelphi
а что с ними делать дальше не знаю
а дальше нужно относительные ссылки преобразовать в абсолютные. делается добавлением имени хоста в начало.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 20.05.2013, 15:06
bddelphi bddelphi вне форума
Прохожий
 
Регистрация: 28.01.2013
Сообщения: 15
Репутация: 10
По умолчанию

классно! Спасибо! А не подскажите какой компонент использовать, чтоб все эти гиперссылки можно было использовать (нажимать и переходить по ним)?
Ответить с цитированием
  #7  
Старый 20.05.2013, 15:11
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от bddelphi
классно! Спасибо! А не подскажите какой компонент использовать, чтоб все эти гиперссылки можно было использовать (нажимать и переходить по ним)?
Можно опять использовать тот же TWebBrowser - генерировать на лету html-страницу со ссылками и передавать её в TWebBrowser.
Ответить с цитированием
  #8  
Старый 20.05.2013, 15:13
bddelphi bddelphi вне форума
Прохожий
 
Регистрация: 28.01.2013
Сообщения: 15
Репутация: 10
По умолчанию

т.е. просто из memo обратно перекинуть в TWebBrowser?
Ответить с цитированием
  #9  
Старый 20.05.2013, 15:17
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от bddelphi
т.е. просто из memo обратно перекинуть в TWebBrowser?
Нет. Если просто ссылки перекинуть в TWebBrowser, то они будут простым текстом, т.е. ссылки будут нерабочими. Нужно генерировать корректный HTML-документ, с корректными соответствующими тегами.
Ответить с цитированием
  #10  
Старый 20.05.2013, 15:20
bddelphi bddelphi вне форума
Прохожий
 
Регистрация: 28.01.2013
Сообщения: 15
Репутация: 10
По умолчанию

А не подскажите как это сделать - не очень понятно. Вот то, что у меня получилось... (архив)
Вложения
Тип файла: rar отображение интернет - страницы.rar (233.7 Кбайт, 3 просмотров)
Ответить с цитированием
  #11  
Старый 20.05.2013, 15:26
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от bddelphi
А не подскажите как это сделать - не очень понятно. Вот то, что у меня получилось... (архив)
Вот пример - вроде работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  col: IHTMLElementCollection;
  elem: IHTMLElement;
  i: Integer;
  sl: TStringList;
  s1, s2: String;
  ms: TMemoryStream;
begin
  col:=(WebBrowser1.Document as IHTMLDocument2).all.tags('A') as IHTMLElementCollection;
  sl:=TStringList.Create;
  try
    sl.Add('<HTML><BODY>');
    for i := 0 to col.length-1 do
    begin
      elem:=col.item(i, EmptyParam) as IHTMLElement;
      s1:=Trim(elem.innerText);
      s2:=(elem as IHTMLAnchorElement).href;
      sl.Add('<A HREF="'+s2+'">'+s1+'</A><BR>');
    end;
    sl.Add('</BODY></HTML>');

    ms:=TMemoryStream.Create;
    try
      sl.SaveToStream(ms);
      ms.Position:=0;
      (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
    finally
      ms.Free;
    end;
  finally
    sl.Free;
  end;
end;

p.s. Архив ещё не смотрел.
Ответить с цитированием
  #12  
Старый 20.05.2013, 15:32
bddelphi bddelphi вне форума
Прохожий
 
Регистрация: 28.01.2013
Сообщения: 15
Репутация: 10
По умолчанию

Огромное Вам спасибо!!!! Работает!!! Остальное попробую сама доделать!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:05.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025