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

Сразу видятся 2 пути развития:
- добавить еще сворачивание в трей и вызов по hotkey, для быстрого просмотра
- и массовая проверка хостов с последующим выводом в *.txt / *xls формате
Спасибо. На простом примере разъяснили впринципе всю технологию парсинга
Мне всегда было интересно зачем писать то, что в жизни требуется только когда метеорит упадет , т.е. раз в жизни. Насколько я помню эти выдачи не случаются каждый день, а раз в 2 недели можно спокойненько за йти на сайт и посмотреть. Ты не думай что я тебя упрекаю в создании чего нибудь ненужного, просто если бы ты применил свои знания к чему нибудь более весомому, так и люди были бы более довольны, ведь есть же например до черта тем где нужны прогеры с головой как у тебя а не жопой с ручкой
Удачи в жизни. Простая женщина
Ну что за нападки опять… Сперва советую прочитать название блога, а потом его адрес.
Сайт про парсинг, а это пример. Как видим, такое нужно может и редко, но вполне удачно реализовано в той же программе Search Monitor, а многие люди живут от выдачи до выдачи, так как не всегда ограничивается одним блогом, а порой сеткой, и не одной, сателлитов =)
Ок я тебя поняла. Тогда так : сделай парсер для сайта Subscribe.ru—- Т.З. ввожу название категории, кол-во статей и парсер парсит (чистый текст, без тегов и форматирования) создает как результат своей работы TXT файлы, каждый файл имеет название с тайтла статьи + в файле первая строчка тайтл статьи с форматированием Заголовок1 (как в OpenOffice). Готова купить прогу. Моя аська: 40-57ноль96-27
ТЗ вроде несложное, но ближайшую неделю времени нет. Разгребу кучу дел, там может посмотрим =)
Сейчас не возьмусь
Парси другие сайты, ставь информеры – вот и горов сайтец!
Отлично…сделаю первую парсилку )
Классный способ. У меня на сайте раньше гораздо сложнее схема была, с зарубежного сайта. через специальный «тяжелый» плагин. Буду этот настраивать!
Поправь форматирование кода в статье, разъезжается жесть)
Странно, что разъезжается, должен плагин всё превращать в красивый код.
Как-никак, сейчас посмотрю
что-то с ним не так, как-нибудь поправлю) надеюсь)
Код после фразы
» Теперь смотрим исходный код фрагмента:» разъезжается очень сильно в Гугл Хроме
У меня вообще на блоки и в правую сторону строка пошла. Вообще ужас Читать не удобно совсем. У меня Mozilla Firefox.
Уважаемый администратор, исправьте, пожалуйста!
Отлично сделано, я в этом не бум бум)) но принцип понравился, попробую ща
А можно вывести у себя на блоге в виджете такую обновляемую штучку? Что для этого нужно сделать?
Писать на php :)
а что значит vres.Free ?
это вроде не очистка переменной..
А парсер по Адвордсу с залогиненого аккаунта и настройками частотности и регионов слабо сделать? Такого софта не хватает (кроме AllSubmitter который стоит приличную сумму)
Я не могу понять для чего эта информация. Если можно просто зайти на сайт поставить свой сайт и посмотреть результаты. Если что я не понял правильно, извини. Идея нормальная, хоть с чего то надо начинать.
Успехов тебе в дальнейшем.
Спасибо) Не понял и ладно :)