Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Обработка Веб-страниц в Делфи


Автор: Mach3 8.7.2008, 02:16
Привет...
Хочу написать программу, но не представляю алгоритм ее действий...
Программа должна делать следующее:
С сайта drom.ru загружать информацию о продаваемых машинах и сохранять в БД или в таблице Excel с последующей выборкой по заданным условиям...
Практики работы с веб страницами небыло, поэтому не совсем понимаю какая последовательность действий программы должна быть...
Поделитесь соображениями по этому поводу...
И еще: где проще и лучше будет хранить эти данные? В БД или Excel?
Заранее благодарен...

Автор: Frees 8.7.2008, 08:00
Цитата(Mach3 @  8.7.2008,  02:16 Найти цитируемый пост)
В БД или Excel?

зависит от того как будеш пользовать эту информацию. я бы в базе хранил в ехель всегда можно экспортнуть

а для начала просто попробуй скачать страницу с сайтагде лежит нужная информауия а уже попытаться разобрать HTML это 2 шаг
для доступа к сайту используй indy

Автор: Rodman 8.7.2008, 12:24
компонент 
Код

THTTP.Get(...)
для изъятия текста из страницы

Автор: Frees 8.7.2008, 13:58
Цитата(Rodman @  8.7.2008,  12:24 Найти цитируемый пост)
для изъятия текста из страницы

я бы скорее сказал для изъятия текста с сервера

Автор: Mach3 8.7.2008, 16:05
Т.е. сначала я загружаю страницу..
Потом парсирую.. Отсеиваю нужную мне информацию..
А как я буду загружать следующую страницу...
1,2,3,4... надо каждый раз вытаскивать ссылку из страницы ?

Автор: Mach3 8.7.2008, 16:23
Код

memo1.lines.add(idhttp1.Get('http://www.drom.ru'));

Вернуло:
---------------------------
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head><body><b><font color=red>Внимание!</font></b><p>Массовое скачивание страниц этого сайта специальными программами запрещено! Если вы попробуете обойти это ограничение, ваш IP-адрес может быть забанен на неопределенный срок!</body></html>
---------------------------
Как быть?

Автор: Rodman 8.7.2008, 22:11
Цитата(Mach3 @  8.7.2008,  16:23 Найти цитируемый пост)
Как быть? 

ну тут уже легче в TStringList загнать и парсить

Автор: Frees 9.7.2008, 07:15
а есть способ работать с html как с xml?
или нужно самаму все парсить?

Добавлено через 58 секунд
Rodman, он имеет в виду может как быть с тем что ему угражают баном

Добавлено через 2 минуты и 46 секунд
Цитата(Mach3 @  8.7.2008,  16:23 Найти цитируемый пост)
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head><body><b><font color=red>Внимание!</font></b><p>Массовое скачивание страниц этого сайта специальными программами запрещено! Если вы попробуете обойти это ограничение, ваш IP-адрес может быть забанен на неопределенный срок!</body></html>---------------------------Как быть?


прикинуться учздщкукщь. и выдерживать паузу перед скачиванием может и поможет

Автор: Mach3 9.7.2008, 09:59
Цитата

прикинуться Explorer'ом и выдерживать паузу перед скачиванием может и поможет

А можно поподробнее?
Как сервер определяет браузер ли посылает запрос?

Автор: Elfebet 9.7.2008, 11:28
в компоненте TIdHTTP есть свойство UserAgent вот там ты можеш написать к примеру
Код

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)

и сервер будет считать что ты загрузил страницу с Internet Explorer 6.0

Автор: Frees 9.7.2008, 13:00
ну тут надо подробнее выяснить как сервер определяет что ты робот. но это тебе в другой раздел форума.

Автор: Mach3 21.7.2008, 06:44
Код

procedure TForm1.Button1Click(Sender: TObject);
var http:TidHTTP;
    drom:TStringStream;
    s:TstringList;
    i,j,ftag,ntag:integer;
    sdrom,finishstring:string;
begin
drom.Create('');
http:=IdHTTP1.Create(nil);
http.get('http://www.drom.ru', drom);
sdrom:=drom.ReadString(8);
i:=length(sdrom);
for j:=1 to i do begin
ftag:=posex('<td>', s[1], i);
ntag:=posex('</td>', s[1], i);
FinishString:=copy(sdrom, ftag, ntag-ftag);
memo1.Lines.Add(FinishString);
end;


Какую бы строку не пытался из StringStream засунуть в String выдаёт ошибку..
Что не так делаю?
Может лучше/проще загружать в TStringList?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)