Форум: "Сети";
Текущий архив: 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