![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#8
|
|||
|
|||
|
Здесь проще и удобней использовать регулярные выражения (компонент TRegExpr).
|