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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.08.2010, 18:35
gersio gersio вне форума
Прохожий
 
Регистрация: 10.01.2010
Сообщения: 5
Репутация: 10
Радость Вытащить инфу из веб-страницы

Не буду ходить вокруг да около. Сразу к делу.
Мне нужно с одного сайта содрать некую инфу.
Вот страница из сайта: http://ua.oriflame.com/recruits/
Нужно взять надписи, которые находятся внизу:
Каталог 11
8/8/2010 - 28/8/2010
+ картинка каталога


Вот скрины:



Помогите, пожалуйста, уже около месяца с данной проблемой борюсь.... та и только начинающий программист.....
Ответить с цитированием
  #2  
Старый 26.08.2010, 19:52
aleksnine aleksnine вне форума
Начинающий
 
Регистрация: 08.03.2007
Сообщения: 151
Репутация: 12
По умолчанию

Вот как-то так :

Код:
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  
Старый 27.08.2010, 10:20
gersio gersio вне форума
Прохожий
 
Регистрация: 10.01.2010
Сообщения: 5
Репутация: 10
Хорошо

Огромное спасибо, попробую...
Ответить с цитированием
  #4  
Старый 28.08.2010, 12:25
gersio gersio вне форума
Прохожий
 
Регистрация: 10.01.2010
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от aleksnine
Вот как-то так :

Код:
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));

Спасибо огромное, помогло. Код работает отлично. Я его немного под себя поправил чуть-чуть... Теперь хоть понял как с idHTTP работать.....
Ответить с цитированием
  #5  
Старый 28.08.2010, 17:28
gersio gersio вне форума
Прохожий
 
Регистрация: 10.01.2010
Сообщения: 5
Репутация: 10
По умолчанию

Спс за помощь. Очень помогло.... Только теперь опять проблема. Буду рад, если поможете.
Сделать нужно тоже самое, вытянуть инфу все же с того сайта. Вот ссыль:
http://ua.oriflame.com/products/prod...&prodCode=7191
_____________________________________________
Нужно вытащить:
1)Название продукта(Туалетная вода Lucia);
2)Описание продукта(Пусть аромат Lucia укажет вам путь к счастью! Этот цветочно-фруктовый букет, искрящийся ароматами лимона, цветков жасмина и индийского сандала, источает свет и чистоту. 50 мл.);
3)Его цену(194.00 грн.).
Ответить с цитированием
  #6  
Старый 28.08.2010, 17:29
gersio gersio вне форума
Прохожий
 
Регистрация: 10.01.2010
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от gersio
Спс за помощь. Очень помогло.... Только теперь опять проблема. Буду рад, если поможете.
Сделать нужно тоже самое, вытянуть инфу все же с того сайта. Вот ссыль:
http://ua.oriflame.com/products/prod...&prodCode=7191
_____________________________________________
Нужно вытащить:
1)Название продукта(Туалетная вода Lucia);
2)Описание продукта(Пусть аромат Lucia укажет вам путь к счастью! Этот цветочно-фруктовый букет, искрящийся ароматами лимона, цветков жасмина и индийского сандала, источает свет и чистоту. 50 мл.);
3)Его цену(194.00 грн.).
_____________________________________________
Делал как по ответу:
Код:
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  
Старый 28.08.2010, 22:23
aleksnine aleksnine вне форума
Начинающий
 
Регистрация: 08.03.2007
Сообщения: 151
Репутация: 12
По умолчанию

Код:
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  
Старый 29.08.2010, 13:31
GlooK GlooK вне форума
Прохожий
 
Регистрация: 29.08.2010
Сообщения: 2
Репутация: 10
По умолчанию

Здесь проще и удобней использовать регулярные выражения (компонент TRegExpr).
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter