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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2010, 12:32   #1
gamer123
Пользователь
 
Регистрация: 19.01.2008
Сообщений: 92
По умолчанию Парсер Alexa Rank

Непонятно почему не работает. Суть такая - в мемо1 находятся линки. Определяем их количество - это будет количество повторений цикла, далее делаем гет запрос с первым линком, распарсиваем получанную страницу и получаем ранк (т.к. он бывает дробным, то обрезаем лишнее, убираем пробелы - вобщем приводим к виду целого числа), после этого пишем в мемо2 это значение. и т.д. После нажатия кнопки идет какаято работа и потмо завершается без каких либо видимых изменений. В мемо2 ничего не пишется

Код:
procedure TMain.Button1Click(Sender: TObject);
var
  i:integer;
  load:string;
  alexasrc:string;
  alexa:string;
begin
  for i:=0 to Main.ParsedLinks.Lines.Count do
    load:=Main.IdHTTP1.Get('http://www.alexa.com/search?q='+Main.ParsedLinks.Lines[i]+'&r=site_screener&p=bigtop');
      while pos('US</a>',load) <> 0 do begin
        load:=copy(load,pos('US</a>',load)+7,length(load));
        alexasrc:= copy(load,0,pos('</li>',load)-1);
        alexa:=TrimRight(alexasrc);
        Main.Memo1.Lines.Add(alexa);
        load:=copy(load,pos('">',load),length(load));
      end;
end;
P.s. - никак не получается удалить запятую из середины числа, если она там есть
gamer123 вне форума Ответить с цитированием
Старый 27.08.2010, 12:44   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

For надо немного переписать
Так подсчет строк count начинается с 1 а обращение к строке strings[i] c 0

Код:
for i:=0 to Main.ParsedLinks.Lines.Count-1 do
И все содержимое после for надо взять в begin ... end;
Иначе у вас получается что цикл загружает i раз данные со станицы в переменную load и работает с ней. А оная является пустой, тк lines.strings[lines.count] не существует.
kangreon вне форума Ответить с цитированием
Старый 27.08.2010, 13:22   #3
gamer123
Пользователь
 
Регистрация: 19.01.2008
Сообщений: 92
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
For надо немного переписать
Так подсчет строк count начинается с 1 а обращение к строке strings[i] c 0

Код:
for i:=0 to Main.ParsedLinks.Lines.Count-1 do
И все содержимое после for надо взять в begin ... end;
Иначе у вас получается что цикл загружает i раз данные со станицы в переменную load и работает с ней. А оная является пустой, тк lines.strings[lines.count] не существует.

Спасибо, все отлично работает.

Есть какаято функция, чтобы удалить запятую - 50,000 > 50000 ?
gamer123 вне форума Ответить с цитированием
Старый 27.08.2010, 13:35   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Можно сделать
Код:
 s := '50,000';
 s := StringReplace(s,',','',[rfReplaceAll]);
kangreon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Универсальный парсер gamer123 Общие вопросы Delphi 20 10.08.2010 09:23
MSN – bing имеет свой собственный PR (Page rank) не доступен для показа. seo-gid Обсуждение статей 0 26.07.2010 17:59
Парсер Ronin333 Общие вопросы C/C++ 3 15.04.2010 14:00
Как корректнее определить популярность сайта? Alexa Reach, Alexa Rank, Google PR mutabor Свободное общение 3 11.01.2010 13:35
Парсер ПС на Delphi dotsik Помощь студентам 0 06.06.2009 15:12