Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2012, 19:36   #1
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию Парсинг ссылок сайта

Здравствуйте. Хочу получить из страницы сайта все ссылки на его новости (их 10 штук). Пишу такой код:
procedure TForm1.Button1Click(Sender: TObject);
var
a : String;
begin
while memo1.Lines.Count-1 < 10 do
begin
a := IdHTTP1.Get('http://адрес страницы сайта/');
Delete(a,1,pos('<h1> <a href="',a)+length('<h1> <a href="')-1);
Delete(a,pos('</a> </h1>',a),length(a));
Memo1.Lines.Add(a);
end;
end;

Ссылка выводится в МЕМО, только одна и та же ссылка 10 раз выводится. Как мне доделать, что бы были все 10 разных ссылок?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 26.02.2012, 19:40   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вам надо не 10 раз получать страницу, а один раз получив её, парсить все ссылки на ней.

PS: лучше применять PosEx, а не Delete.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.02.2012, 20:47   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Регулярные выражения, мм?
Человек_Борща вне форума Ответить с цитированием
Старый 26.02.2012, 21:07   #4
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вам надо не 10 раз получать страницу, а один раз получив её, парсить все ссылки на ней.

PS: лучше применять PosEx, а не Delete.
Пробую делать так
procedure TForm1.Button1Click(Sender: TObject);
var
bg, en, n : Integer;
res : String;
begin
text := IdHTTP1.Get('адрес сайта');
for n :=0 to 10 do
begin
bg:=pos('<h1> <a href="',text);
en:=pos('</a> </h1>',text);
res:=copy(text,bg,en-bg);
memo1.Lines.Add(res);
end;
end;
При таком коде вообще ничего не происходит. Хотя строки 10 раз добавляются.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 26.02.2012, 21:41   #5
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Пробую делать даже вот так:
procedure TForm1.Button1Click(Sender: TObject);
var
startPos, endPos, n : Integer;
MyText, text : string;
begin
Memo2.Lines.Text := IdHTTP1.Get('сайт');
MyText := Memo2.Lines.Text;
for n :=0 to 10 do
begin
startPos := PosEx('<h1> <a href="', MyText);
endPos := PosEx('</a> </h1>', MyText, startPos);
text := Copy(MyText, startPos, endPos - startPos);
Memo1.Lines.Add(text);
end;
end;

Результата нет.
Смотреть фильмы HD Фильмы для планшетов

Последний раз редактировалось demiancz; 26.02.2012 в 21:47.
demiancz вне форума Ответить с цитированием
Старый 26.02.2012, 22:46   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Получаешь строку и через while или repeat пробегаешь по ней в поисках <h1> <a href=
Прикрепи файл (*.txt) с примерным содержимым страницы - попробую сделать
Shouldercannon вне форума Ответить с цитированием
Старый 26.02.2012, 22:57   #7
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Получаешь строку и через while или repeat пробегаешь по ней в поисках <h1> <a href=
Прикрепи файл (*.txt) с примерным содержимым страницы - попробую сделать
Буду очень благодарен если поможете и объясните как делать правильно. Файл прикрепляю. Суть в том что бы вытянуть ссылки только с названием фильмов. Их 10 на странице. Вот нужно вытянуть через запятую сначалла ссылку на фильм а потом название.
Вид типа:
хттп://сайт/2011-04-18-18-23-46/2829--2010,Без возвращения (2010)

Буду очень благодарен если поможете разобраться как реализовать такую возможность. Сразу скажу что этот сайт как пример. Мне важно понять принцип работы, а потом буду пробовать к другим сайтам подобрать код.
Вложения
Тип файла: txt file.txt (42.2 Кб, 27 просмотров)
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 27.02.2012, 00:33   #8
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Вот написал такой код
procedure TForm1.Button1Click(Sender: TObject);
var
StartPos, endPos, n : Integer;
MyText : string;
begin
MyText := IdHTTP1.Get('хттп://сайт/');
for n := 0 to 10 do
begin
startPos := PosEx('<td class="contentheading" width="100%">', MyText);
endPos := PosEx('class="contentpagetitle">', MyText, startPos);
text := Copy(MyText, startPos, endPos - startPos);
Memo1.Lines.Add(text);
end;
end;

Но он как и код в первом посте 10 раз выводит одну и туже ссылку. А мне надо 10 разных.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 27.02.2012, 00:38   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
 StartPos, endPos, n : Integer;
 MyText : string;
 begin
 MyText := IdHTTP1.Get('хттп://сайт/');
 endPos:=1;
 for n := 0 to 10 do
 begin
 startPos := PosEx('<td class="contentheading" width="100%">', MyText, endPos);
 endPos := PosEx('class="contentpagetitle">', MyText, startPos);
 text := Copy(MyText, startPos, endPos - startPos);
 Memo1.Lines.Add(text);
 end;
 end;
а если так?

ТС, не игнорируйте тэг кода !
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2012, 01:00   #10
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Спасибо. То что надо.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
preg_match? парсинг и вывод списка ссылок? taurii PHP 1 07.02.2012 16:16
Парсинг ссылок cashmail PHP 1 01.07.2011 16:39
парсинг сайта CodeNOT PHP 1 21.03.2011 09:48
Парсинг сайта AnToHa-KiLL Общие вопросы Delphi 3 30.06.2009 08:22
парсер (сбор ссылок с сайта) AlexMenco Фриланс 9 24.02.2009 19:39