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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2012, 21:36   #1
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию Проблема с парсингом ссылок, парсится одна и та же ссылка!

PHP код:
procedure TForm1.sButton1Click(SenderTObject); 
var 
//RegExp : TRegExpr; 
revurl:string
head: array[1..100of string
begin 
while sMemo1.Lines.Count-10 do 
begin 
randomize

rev:=send('GET'Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head); 
url:=parser(rev,'<h2><a href="''">',0,0); 
Form1.sMemo1.Lines.Add(url); 
end
end
Здравствуйте, у меня проблема. Проблема в том что если парсю 10 ссылок то они все одинаковые (то есть парсится первая ссылка и не переходит к второй), мне же надо чтобы ссылки были разные. Код <h2><a href= везде одинаковый, в этом и проблема. Знакомый подсказал что надо через RegExp, но никогда ранее с этим компонентом не работал, помогите пожалуйста.
FleXik вне форума Ответить с цитированием
Старый 01.11.2012, 21:54   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
procedure TForm1.sButton1Click(Sender: TObject);  
var  
//RegExp : TRegExpr;  
rev, url:string;  
head: array[1..100] of string;  
begin  
rev:=send('GET', Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head);  
while sMemo1.Lines.Count-1 < 10 do  
begin  
randomize; //зачем?

url:=parser(rev,'<h2><a href="', '">',0,0);  

Form1.sMemo1.Lines.Add(url); 
delete(rev,1,pos('<h2><a href="',rev)); 
end;  
end;
Может так?
Кольша вне форума Ответить с цитированием
Старый 01.11.2012, 22:03   #3
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
Код:
procedure TForm1.sButton1Click(Sender: TObject);  
var  
//RegExp : TRegExpr;  
rev, url:string;  
head: array[1..100] of string;  
begin  
rev:=send('GET', Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head);  
while sMemo1.Lines.Count-1 < 10 do  
begin  
randomize; //зачем?

url:=parser(rev,'<h2><a href="', '">',0,0);  

Form1.sMemo1.Lines.Add(url); 
delete(rev,1,pos('<h2><a href="',rev)); 
end;  
end;
Может так?
То же самое... Не хочет парсить разные ссылки..
FleXik вне форума Ответить с цитированием
Старый 01.11.2012, 22:05   #4
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

можно увидеть страницу которую вы хотите распарсить?
Кольша вне форума Ответить с цитированием
Старый 01.11.2012, 22:07   #5
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
можно увидеть страницу которую вы хотите распарсить?
http://fishki.net/

парсить надо ссылки на новости, пример: http://fishki.net/comment.php?id=126726 , должно парсить разные ссылки, ну как разные, просто по очереди а не одну и ту же
FleXik вне форума Ответить с цитированием
Старый 01.11.2012, 22:16   #6
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
procedure TForm1.sButton1Click(Sender: TObject);  
var  
rev, url:string;  
head: array[1..100] of string;  
begin  
rev:=send('GET', Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head);  
while sMemo1.Lines.Count-1 < 10 do  
url:=pars('<h2><a href="', '">',rev);  
sMemo1.Lines.Add(url);  
delete(rev,1,pos('<h2><a href="',rev)+length('<h2><a href="')); 
end;  
end;
функция pars
Должно работать!
Кольша вне форума Ответить с цитированием
Старый 01.11.2012, 22:28   #7
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
Код:
procedure TForm1.sButton1Click(Sender: TObject);  
var  
rev, url:string;  
head: array[1..100] of string;  
begin  
rev:=send('GET', Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head);  
while sMemo1.Lines.Count-1 < 10 do  
url:=pars('<h2><a href="', '">',rev);  
sMemo1.Lines.Add(url);  
delete(rev,1,pos('<h2><a href="',rev)+length('<h2><a href="')); 
end;  
end;
функция pars
Должно работать!
Не работает, в той функции парсинга что у меня итак все хорошо, а если написать while sMemo1.Lines.Count-1 < 10 do так как у Вас, то программа вообще виснет
FleXik вне форума Ответить с цитированием
Старый 01.11.2012, 22:34   #8
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
procedure TForm1.sButton1Click(Sender: TObject);  
var  
rev, url:string;  
head: array[1..100] of string;  
begin  
rev:=send('GET', Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head);  
while sMemo1.Lines.Count-1 < 10 do  
begin///стер случайно попробуйте сейчас
url:=pars('<h2><a href="', '">',rev);  
sMemo1.Lines.Add(url);  
delete(rev,1,pos('<h2><a href="',rev)+length('<h2><a href="')); 
end;  
end;
Кольша вне форума Ответить с цитированием
Старый 01.11.2012, 22:37   #9
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
Код:
procedure TForm1.sButton1Click(Sender: TObject);  
var  
rev, url:string;  
head: array[1..100] of string;  
begin  
rev:=send('GET', Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head);  
while sMemo1.Lines.Count-1 < 10 do  
begin///стер случайно попробуйте сейчас
url:=pars('<h2><a href="', '">',rev);  
sMemo1.Lines.Add(url);  
delete(rev,1,pos('<h2><a href="',rev)+length('<h2><a href="')); 
end;  
end;
Наконец-то, вот теперь работает, только оно вытягивает еще 1 ссылочку, вообще с другим доменом, но работает хорошо и ссылки разные спасибо большое!

http://fishki.net/comment.php?id=126726
http://fishki.net/comment.php?id=126639
http://fishki.net/comment.php?id=126661
http://send.fishki.net/comment.php?id=157870
http://fishki.net/comment.php?id=126697
http://fishki.net/comment.php?id=126673
http://fishki.net/comment.php?id=126699
http://fishki.net/comment.php?id=126647
http://fishki.net/comment.php?id=126696
http://fishki.net/comment.php?id=126680
http://fishki.net/comment.php?id=126690

Вот эта ссылка какраз и парсится
FleXik вне форума Ответить с цитированием
Старый 01.11.2012, 22:42   #10
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
procedure TForm1.sButton1Click(Sender: TObject);  
var  
rev, url:string;  
head: array[1..100] of string;  
begin  
rev:=send('GET', Form1.sEdit1.Text,'','','','application/x-www-form-urlencoded;','','','','','',head);  
while sMemo1.Lines.Count-1 < 10 do  
begin///стер случайно попробуйте сейчас
url:=pars('<h2><a href="', '">',rev); 
if pos('send',url)=0 then///типичная проверка
sMemo1.Lines.Add(url);  
delete(rev,1,pos('<h2><a href="',rev)+length('<h2><a href="')); 
end;  
end;
Кольша вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с парсингом Pein95 Общие вопросы Delphi 3 23.11.2011 06:08
Криво парсится текст INSectoID Общие вопросы Delphi 5 14.07.2011 20:55
проблема с парсингом Pein95 Общие вопросы Delphi 5 14.07.2011 20:11
Одна внешняя ссылка для большой формулы almik Microsoft Office Excel 8 11.04.2011 14:48