Парсим даты апдейтов с главной pr-cy

Привет! Давно не писал :)
Как известно на главной странице pr-cy.ru есть даты обновлений тИЦ, pr и яндекс выдачи. Я, как и многие, часто захожу туда, дабы проверить, не обновилось ли что-нибудь.
Сегодня напишем небольшую программу-пример, показывающую, как получить эти даты.1) Сперва заходим на сайт, видим:

Даты апдейтов тИЦ, pagerank и выдачиТри даты. Чтож, ТЗ есть.

Теперь смотрим исходный код фрагмента:

<p><span class="blue">G</span><span class="red">o</span><span class="yellow">o</span><span class="blue">g</span><span class="red">le</span> <span class="lar">PR</span><span class="date"><acronym title="11 д. назад">03.04.2010</acronym></span></p>

<p><span class="red">Я</span><b>ндекс</b> <span class="ar">тИЦ</span><span class="date"><acronym title="6 д. назад">08.04.2010</acronym></span></p>
<p class="p-last"><span class="ar">выдача</span><span class="date"><b>13.04.2010</b></span></p>

Достаточно примечательный фрагмент.

Итак, создадим новую программу, поставим кнопку и надпись (Button1 и Label1).
Для получения страницы мы будем использовать библиотеку Synapse, поэтому подключим модуль httpsend.

В процедуре-обработчике нажания на кнопку пропишем:

procedure TForm1.Button1Click(Sender: TObject);
var
  vres: TStringList;
begin
  vres:=TStringList.Create;
  if HttpGetText('http://pr-cy.ru', vres) then begin
    // мы успешно получили код страницы pr-cy, дальше будем писать сюда
  end else begin
    ShowMessage('error getting pr-cy!');
  end;
  vres.Free;
end;

Теперь введём переменные scy, spr, syv: string; и константу cpr = ‘<span class=»lar»>PR</span>’; — по ней мы будем ориентироваться.

Строки с датами найдём так:

    i:=0;
    Repeat
      if Pos(cpr, vres.Strings[i])<>0 then break;
      i:=i+1;
    until 1=0;
    spr:=vres.Strings[i];
    scy:=vres.Strings[i+1];
    syv:=vres.Strings[i+2];

Выделим в каждой строке span с помощью функций delete, pos и posex (strutils):

    i:=Pos('<span class="date">', spr);
    Delete(spr, 1, PosEx('">', spr, i+1)+1);
    i:=Pos('<span class="date">', scy);
    Delete(scy, 1, PosEx('">', scy, i+1)+1);
    i:=Pos('<span class="date">', syv);
    Delete(syv, 1, PosEx('">', syv, i+1)+1);

Ещё немного попарсим:

    i:=Pos('<span class="date">', spr);
    Delete(spr, 1, PosEx('">', spr, i+1)+1);
    i:=Pos('<span class="date">', scy);
    Delete(scy, 1, PosEx('">', scy, i+1)+1);
    i:=Pos('<span class="date">', syv);
    Delete(syv, 1, PosEx('">', syv, i+1)+1);
    repeat
      i:=Pos('<', spr);
      if i=0 then break;
      Delete(spr, i, PosEx('>', spr, i));
    until 1=0;
    repeat
      i:=Pos('<', scy);
      if i=0 then break;
      Delete(scy, i, PosEx('>', scy, i));
    until 1=0;
    repeat
      i:=Pos('<', syv);
      if i=0 then break;
      Delete(syv, i, PosEx('>', syv, i));
    until 1=0;
    spr:=StringReplace(spr, '>', '', [rfReplaceAll]);
    scy:=StringReplace(scy, '>', '', [rfReplaceAll]);
    syv:=StringReplace(syv, '>', '', [rfReplaceAll]);
    spr:=StringReplace(spr, ' ', '', [rfReplaceAll]);
    scy:=StringReplace(scy, ' ', '', [rfReplaceAll]);
    syv:=StringReplace(syv, ' ', '', [rfReplaceAll]);

И можно вывести результат:

    Label1.Caption:='pr: '+spr+#13#10+'тИЦ: '+scy+#13#10+'Выдача: '+syv;

Вот и вся арифметика. Скачать проект с парсингом дат можно по этой ссылке.
Также советую готовую программу от Борисова Сергея — Search Monitor, спасибо, что обратили на неё внимание :)

Давно я не появлялся :) Меня просто очень сильно мотивировали написать пост обои для рабочего стола. Они бесплатные :D

105 ответов к «Парсим даты апдейтов с главной pr-cy»

  1. Сразу видятся 2 пути развития:
    — добавить еще сворачивание в трей и вызов по hotkey, для быстрого просмотра
    — и массовая проверка хостов с последующим выводом в *.txt / *xls формате

  2. Мне всегда было интересно зачем писать то, что в жизни требуется только когда метеорит упадет , т.е. раз в жизни. Насколько я помню эти выдачи не случаются каждый день, а раз в 2 недели можно спокойненько за йти на сайт и посмотреть. Ты не думай что я тебя упрекаю в создании чего нибудь ненужного, просто если бы ты применил свои знания к чему нибудь более весомому, так и люди были бы более довольны, ведь есть же например до черта тем где нужны прогеры с головой как у тебя а не жопой с ручкой

    Удачи в жизни. Простая женщина

    1. Ну что за нападки опять… Сперва советую прочитать название блога, а потом его адрес.
      Сайт про парсинг, а это пример. Как видим, такое нужно может и редко, но вполне удачно реализовано в той же программе Search Monitor, а многие люди живут от выдачи до выдачи, так как не всегда ограничивается одним блогом, а порой сеткой, и не одной, сателлитов =)

      1. Ок я тебя поняла. Тогда так : сделай парсер для сайта Subscribe.ru—- Т.З. ввожу название категории, кол-во статей и парсер парсит (чистый текст, без тегов и форматирования) создает как результат своей работы TXT файлы, каждый файл имеет название с тайтла статьи + в файле первая строчка тайтл статьи с форматированием Заголовок1 (как в OpenOffice). Готова купить прогу. Моя аська: 40-57ноль96-27

  3. Классный способ. У меня на сайте раньше гораздо сложнее схема была, с зарубежного сайта. через специальный «тяжелый» плагин. Буду этот настраивать!

    1. У меня вообще на блоки и в правую сторону строка пошла. Вообще ужас Читать не удобно совсем. У меня Mozilla Firefox.
      Уважаемый администратор, исправьте, пожалуйста!

  4. А парсер по Адвордсу с залогиненого аккаунта и настройками частотности и регионов слабо сделать? Такого софта не хватает (кроме AllSubmitter который стоит приличную сумму)

  5. Я не могу понять для чего эта информация. Если можно просто зайти на сайт поставить свой сайт и посмотреть результаты. Если что я не понял правильно, извини. Идея нормальная, хоть с чего то надо начинать.
    Успехов тебе в дальнейшем.

  6. А мне приходит инфа об оновлении каталога просто потому, что имею аккаунт на SEOBudget — у них это автоматическиая рассылка для всех зарегестрованных пользователей. И обновления Каталога Яндекса тоже приходят.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *