Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Вниз

Как вытащить все сылки из HTML страницы?   Найти похожие ветки 

 
Michael2   (2002-07-26 18:05) [0]

Есть HTML страница. Необходимо получить все ссылки имеющиеся на ней (на другие страницы, на картинки, на css и т.п.), чтобы потом можно было все это дело выкачать и просматривать страницу с диска. Я так понимаю, что нужен какой-то HTML анализатор. Никакого нормального не нашел. Подскажите что-нибудь.


 
Wonder   (2002-07-26 18:07) [1]

Ручками писать.
Качать html-код страницы и разбирать на предмет наличия тегов <a href=...></a>


 
int64   (2002-07-26 23:49) [2]

Не удобно. Уже многие ломали хребет на этом. :)

Есть полно парсеров, надо только поискать.

Или переваривать ресурсы документа через интерфейсы IE.


 
kig   (2002-07-27 01:26) [3]

А чего искать? MSHTML не подходит? (Или тот же IE, как справедливо заметил int64). А получить коллекцию тегов <A>, <IMG> и т.п. - полно примеров в MSDN.

Если надо в "слепую" - то сюда
http://www.euromind.com/iedelphi/uilessparser.htm



 
maxi-mov   (2002-09-16 01:07) [4]

Установи ReGet (Менеджер закачки) после его установки в контекстном меню эксплорера появится строка "Список ссылок для ReGet" Нажимаешь и ReGet генерит тебе страницу с сылками
- бери, сохраняй, пользуйся.


 
delpher_gray   (2002-09-16 11:21) [5]

Ну делфера !
Чё тут трудного то ????
Просто в TStringList копируте HTML код, затем в коде ищите "<a href=", и копируете строку в string от "<a href= до ближайшего "</a>" потом удаляете от строки 8 символов в начале строки, и в коце 4. Вот и всё решение проблемы...


 
Ihor Osov'yak   (2002-09-16 12:14) [6]

2 delpher_gray - человек спрашивал, на другие страницы, на картинки, на css и т.п . Следовательно одним a href= не обойтись.... А вот, когда сделаете то, что чел хочет "ручками" с юзанием того же mshtml.dll - вы сами убедитесь, что были не совсем правы.

2 Wonder (26.07.02 18:07) - аяяй, а еще Мастер.... Ну, как минимум очень спорное предложение (ваше)

2 int64 - полностью согласен.

ЗЫ - да, возникло подозрение, что человеку нужен телепорт. Или есть желание самому аналог сделать?


 
maxi-mov   (2002-09-22 14:34) [7]

2 WONDER and DELPHER_GRAY - можно конечно написать и ручками, никто не спорит. Но все не так просто как вам кажется: между "<a href=" и "</a>" может быть много "лишних" тегов которые тоже надо знать и убирать, плюс возможны лишние пробелы, концы 8) строк и т.п.

ЗЫ - Может кто знает нужный компонент для этих целей? Подскажите...


 
Matandra   (2002-09-22 19:53) [8]

TWEBBrowser нужен...Он все умеет. в форумах все ответы на вопросы выше есть...Если кому что надо - могу прислать пример...
Ссылки берутся так
Document.all.tags("A").QueryInterfac(IID_IHTMLElementCollection,HTMLTags);
for i := 0 to HTMLTags.length - 1 do
begin
HTMLTags.item(i,0).QueryInterface(IID_IHTMLElement,HTMLElement);
end;
Document - свойство WEBBrowser...


 
Undert   (2002-09-23 00:06) [9]

ООО... ну вы и отморозки ... надо использовать TWEBProducer - Он всё умеет... С помощью него можно темлайты лабать...


 
PONTIY   (2002-10-31 08:21) [10]

Извините за возможный оффтопик, но какими именно компонентами можно взять с сайта html-код?


 
Дмитрий К.К.   (2002-10-31 10:08) [11]

Фастнет.


 
Kornet   (2002-10-31 12:39) [12]

Хочется поучаствовать в споре. :) Ihor Osov"yak, ты зря наезжаешь на Wonder, надо учится самому делать, своими ручками, например используя регулярные выражения, а то накачают себе "кампанент"... Код использующий POSIX регулярные выражения и вырезающие теги <a> у меня занимал одну строку...


 
Юрий   (2002-11-11 19:02) [13]

Разрешите вмешаться в разговор?
Если мне надо не показать страницу в окне, а получить только ссылки на файлы картинок, то каким путем идти?


 
Юрий   (2002-11-11 19:06) [14]

Упс, не полностью описал ситуацию - надо зайти на строго определенный сайт, и уже оттуда получить ссылки.



 
int64   (2002-11-11 19:53) [15]

Юрий (11.11.02 19:06)
Вот так парсерим, например, картинки:

procedure TForm1.Button1Click(Sender: TObject);
var
Coll: IHtmlElementCollection;
V: OleVariant;
i: Integer;
IE: IDispatch;
begin
IE := CreateOleObject("InternetExplorer.Application");
With (IE as IWebBrowser),(IE as IWebBrowser2) do
begin
Visible := false;
Navigate(" http://delphi.mastak.ru",v,v,v,v);
while Busy do sleep(0);
Coll:= (document as IhtmlDocument2).all.tags("img")
as IHtmlElementCollection;

for i:=0 to Coll.length-1 do
with (Coll.item(i,v) as IHTMLImgElement) do
if (href <> "") then
begin
Memo1.Lines.add("src: "+src);
Memo1.Lines.add("protocol: "+protocol);
Memo1.Lines.add("nameProp: "+nameProp);
Memo1.Lines.add("");
end;
Quit;
end;
end;


Можно, конечно, и руками. Только стоит ли?


 
int64   (2002-11-11 20:07) [16]

Строка
if (href <> "") then
разумеется, лишняя.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
8-24983
Clinch
2002-09-23 12:29
2003.01.09
Печать Canvas c Bitmap-ом


14-25052
SeF
2002-12-18 11:33
2003.01.09
Delphi 6 & Win2k server & fat32


3-24775
Подскажите
2002-12-16 11:45
2003.01.09
Есть родительская таблица Name_set в ней поля:


3-24766
AlexSh
2002-12-15 12:29
2003.01.09
ADOStoredProc выдает ошибку


3-24798
Чадаева Ирина
2002-12-16 17:12
2003.01.09
Отчеты в Word e





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский