|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Вытащить инфу из веб-страницы
Не буду ходить вокруг да около. Сразу к делу.
Мне нужно с одного сайта содрать некую инфу. Вот страница из сайта: http://ua.oriflame.com/recruits/ Нужно взять надписи, которые находятся внизу: Каталог 11 8/8/2010 - 28/8/2010 + картинка каталога Вот скрины: Помогите, пожалуйста, уже около месяца с данной проблемой борюсь.... та и только начинающий программист..... |
#2
|
|||
|
|||
Вот как-то так :
Код:
uses IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, ExtCtrls, StdCtrls,jpeg; Код:
function katalog(link:string;image:timage):string; var idhttp:tidhttp; i:integer; s:string; st:tstringlist; stream:tmemorystream; const tag_k='<div id="footerBottom"></div>'; site='http://ua.oriflame.com'; begin result:='не нашли'; idhttp:=tidhttp.Create(form1); st:=tstringlist.Create; st.Text:= idhttp.Get(link); for i := 0 to st.Count-1 do begin if st.Strings[i]=tag_k then begin s:=st.Strings[i+12] ; s:=copy(s,ansipos('>',s)+1,length(s)); s:=copy(s,0,ansipos('<',s)-1); result:=s; s:=st.Strings[i+13] ; s:=copy(s,ansipos('>',s)+1,length(s)); s:=copy(s,0,ansipos('<',s)-1); result:=result + ' ' + s; //Инфа по каталогу получена . if st.Strings[i]=tag_k then begin s:=st.Strings[i+9] ; s:=copy(s,ansipos('"',s)+1,length(s)); s:=copy(s,0,ansipos('"',s)-1); s:=site+s; result:=result +' ' +s; //Получили ссылку на картинку каталога stream:=tmemorystream.Create; idhttp.Get(s,stream); with stream do begin position:=0; savetofile('1.jpg'); end; image.Picture.LoadFromFile('1.jpg'); end; end; end; idhttp.Free; st.Free; stream.Free; end; Использование Код:
showmessage(katalog('http://ua.oriflame.com/recruits/',image1)); Последний раз редактировалось aleksnine, 26.08.2010 в 21:49. |
#3
|
|||
|
|||
Огромное спасибо, попробую...
|
#4
|
|||
|
|||
Цитата:
Спасибо огромное, помогло. Код работает отлично. Я его немного под себя поправил чуть-чуть... Теперь хоть понял как с idHTTP работать..... |
#5
|
|||
|
|||
Спс за помощь. Очень помогло.... Только теперь опять проблема. Буду рад, если поможете.
Сделать нужно тоже самое, вытянуть инфу все же с того сайта. Вот ссыль: http://ua.oriflame.com/products/prod...&prodCode=7191 _____________________________________________ Нужно вытащить: 1)Название продукта(Туалетная вода Lucia); 2)Описание продукта(Пусть аромат Lucia укажет вам путь к счастью! Этот цветочно-фруктовый букет, искрящийся ароматами лимона, цветков жасмина и индийского сандала, источает свет и чистоту. 50 мл.); 3)Его цену(194.00 грн.). |
#6
|
|||
|
|||
Цитата:
Делал как по ответу: Код:
function title(link:string):string; var idHTTP:tidhttp; i:integer; s:string; st:tstringlist; const tag_k='<div id="proddet-topbox-prodinfo">'; //site='http://ua.oriflame.com'; begin result:='не нашли'; idhttp:=tidHttp.Create(form1); st:=tstringlist.Create; st.Text:=idhttp.Get(link); for i:=0 TO ST.Count-1 DO begin if st.Strings[i]=tag_k then begin s:=st.Strings[i+18]; s:=copy(s,ansipos('>', s)+1,length(s)); s:=copy(s,0,ansipos('<', s)-1); result:=s; end; end; idHTTP.Free; st.Free; end; |
#7
|
|||
|
|||
Код:
function title(link:string):string; var idHTTP:tidhttp; i,y:integer; s:string; st:tstringlist; const tag_k='<div id="product-detail-topbox"><!-- product-detail-topbox -->'; //site='http://ua.oriflame.com'; begin result:='не нашли'; idhttp:=tidHttp.Create(form1); st:=tstringlist.Create; st.Text:=idhttp.Get(link); for i:=0 TO ST.Count-1 DO begin if st.Strings[i]=tag_k then begin s:=st.Strings[i+15]; for y:=0 to 2 do s:=copy(s,ansipos('"', s)+1,length(s)); s:=copy(s,0,ansipos('"', s)-1); result:='Название : ' +s +#13; // Получили название s:=st.Strings[i+55]; s:=copy(s,ansipos('>', s)+1,length(s)); s:=copy(s,0,ansipos('<', s)-1); result:=result + 'Описание : ' + s +#13; // Получили описание s:=st.Strings[i+74]; s:=copy(s,8,length(s)); result:=result + 'Цена : ' + s; // Получили цену end; end; idHTTP.Free; st.Free; end; |