Привет! Давно не писал :)
Как известно на главной странице 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

Логичнее было написать регулярное выражение. Кода получилось бы раз в 10 меньше =)
С этим согласен, не привык я к ним, пишу так :)
Зря не привык к регулярным выражениям :) С ними парсить на порядок проще. Смотрю к Synapse привык? С регулярками разобраться тоже будет раз плюнуть
Разберёмся :)
Подружись с регулярками. Для делфей есть даже прекрасная библиотека. А так, лишний код, соответственно нерациональная трата времени и сил. На таких вот программках конечно незаметно, но на больших проектах довольно ощутимо.
Кстати, а где почитать, как на delphi использовать регулярные выражения. А то работая с php и perl к ним привык, а когда требуется что-то похожее сделать на дельфях то это ставит в тупик. Заранее спасибо.
Google :)
ухххх, замечательная информация)
но у вас материал кривовато выводиться( в блоках кода проверьте)
Что именно криво?
ну у меня допустим в блоке после строк
«Выделим в каждой строке span с помощью функций delete, pos и posex (strutils):»
идет такое:
i:=Pos(», spr);
Delete(spr, 1, PosEx(‘»>’, spr, i+1)+1);
i:=Pos(», scy);
Delete(scy, 1, PosEx(‘»>’, scy, i+1)+1);
i:=Pos(», syv);
Delete(syv, 1, PosEx(‘»>’, syv, i+1)+1);
Ещё немного попарсим: <—- это уже с HTML разметки пошло и дальше
i:=Pos(», spr);
и повторяется последний кодовый блок.
У меня Опера 10.51
Зашел через мозиллу, этой проблемы уже нет, но зато два предпоследних блока стали заканчиваться на » «
Исправил, спасибо
Да ну…. для этого регэкспы придумали….
олдскул программеры никогда не пользуют регэкспы, они пишут свои
Хех, и правда давно не писал..
С одной стороны вроде как и очень простое решение определенной проблемы, с которой можно столкнуться. Во всяком случае с моими познаниями этого ЯП с 1 курса, я понял, что к чему, а это уже плюс автору))
А с другой стороны я не вижу практического применения этому.((
А мне например интересно не парсить готовые результаты с чужих страничек, а узнать каким образом эти результаты получают?
Какие ещё результаты? Они сами следят за датами :)
Дату апа тИЦ Яша сам подсказывает, письмо автоматически присылается.
Подскажите что и где настроить, чтоб такие письма получать?
По ходу на такие письма нужно разрешение получать
Не нужно ;)
Круто, конечно. Но по-моему для этой цели уже существует достаточно много готовых решений. На том же Мауле , например. А вообще не вижу особой необходимости выводить даты АПдейтов на страницах собственного блога. Вот на Вашем блоге я их не вижу. Да и в принципе среднестатистический web-мастер заходит на pr-cy почти каждый день.
Но сама идея и реализация достойны уважения. Это надо признать.
Почему на страницах блога, в программе :)
А регулярные выражения вы не используете?
Привык всё вручную :)
Используйте xml: http://pr-cy.ru/updates.xml
Вот за это спасибо :)
Всё упрощается
То есть эту программу нельзя присобачить на страницы блога на WP? Это будет отдельная программа, я правильно понял?
да
А зачем она нужна тогда :D
Вот тут заметил еще один косяк дизайна: реклама от Google вылезает за белые границы на серый фон.
Пусть вылезает :)
Лениво менять, да и так внимания больше привлекает :D
Криво смотрится. Ну да дело хозяйское.
Первый блок кода вылез вправо на рубрике (Хром, 1280*1024).
Жалко, что хостинг у это сервиса упал недавно, так нужен был. Сейчас использую только зеркало этого сайта cy-pr.com.
Я, например, делал парсилку Тиц и PR, при обработке своих сайтов, чтобы меня гугл или яндекс не забанил за частые запросы.
На pr-cy изменилось же всё на днях, всё работает? У знакомого вроде проблемы после этой статьи.
Я знаю как заработать с высоким тиц, но pr для чего нужен не представляю
Page Rank-важность страницы, он косвенно, но влияет на выдачу и еще также его можно использовать, как Вы используете ТИЦ)
Как для чего?Если тиц показатель авторитететности ,сайта в целом и то в рамках яндекс-каталога,то PR Показатель авторитетности ,конкретной странички ,
Скажу как Оптимизатор ,я никогда не куплю ссылку с PR близким к нулю ,даже если у сайта распрекрасный тиц под тыщу…
К тому же как мне кажется PR аналогичен ВИЦ …а замечу что именно по виц ранжирует странички яндекс а не по какому то мифическому Тицу…
По теме статьи: ну мне кажется что это излишество , я каждый божий день загуливаю в сапу а там эта инфа всегда свежая…
Эта статья как бы не о заработке на тице, и заработать можно и без него.
Судя по вашему не знанию про pr, вы и про ТИЦ мало знаете =)
Всегда завидовал вот таким людям, которые могут всё сделать своими руками, мне же, для любых задач, связанных с программированием – приходится покупать мозги и руки программиста.
Я бы на вашем месте добавил статью в раздел сео,
Автор просто подошел к вопросу с другой стороны, ну не использует он регулярные выражения, ну и Бог с ними. Не надо кидать камнями. :)
пр нужен для этого же , он будет интересен тем кто продвигаеться в гугле
есть еще такая программа как search monitor
Пользовался, показался малый функционал и забросил. Лучше делать как автор, тут хоть опыт будет ещё в +
Всегда для этих целей пользовалась Ашмановым, вот если бы вы скрипт предсказания написали, тогда бы было круто, а так нет смысла.
Резидент, с высоким Pr ранжируешься в гугле выше, больше комментаторов имеешь, траст, в глазах поисковиков, сайта повышается. Так-то его сложнее поднять, чем Тиц. ИМХО
Программа может быть интересна как часть какого-то более универсального сервиса, а так смысла от нее – ноль.
Блин… программа Search Monitor сырая и находится в стадии бета, а вот за проект с парсингом дат спасибо.
Эх, трудновато мне с этими переменными возится, чуть голову не свернул) Хорошо, что вы подробно все описали – разобрался!
P.s. Search Monitor хоть и в бета тестировании, но мне вполне подходит)
а можно еще код привести как спарсить PR и ТИц ?- хотелось бы сравнительную таблицу на несколько сайтов замутить, оч было бы полезно Ваше решение. Написал бы сам, но в delphi 0.
Выложу, всё будет. Скоро
уже не работает ,админы сайта пошевелились
Ошибка в 33 строке в обработчике. Когда запускаю никакой ошибки нету, но и результата тоже…
Мм, а какая конкретно ошибка?
Что-то типа про неверный синтаксис..
я удивляюсь почему подобные сайты как pr-cy не сделают экспорт такой информации для сторонних сайтов… тем самым организовав бесплатную рекламу себя любимых…
Что то не работает у меня парсилка
Класс, вот это ещё бы заточить под виджет для win7 на рабочий стол, или может такой уже есть ?
У меня все норм работает. Копируйте внимательнее. ))
А кто-то точно знает как PR и ТИЦ зависят от возраста домена?
В частности, если была приостановка делегирования – то возраст домена будет только с последней регистрации?
pr-cy очень часто висит, имхо, лучше было бы с seopult’a
@Валерий а мы и не жалуемся, есть куча скриптов для парса, а если знаешь, можна и самому написать за десяток минут.
По поводу поста: полезный, как раз для новичков))
Регулярные выражения + file_get_contents ( cURL для надежности ) + preg_match – это если парсить html.
А так у них есть готовый xml вывод, с которого парсить можно спокойно, тем же SimpleXML ( пхп5 ).
зы. пхп ближе к душе :)
Я еше, кроме cy-pr.com захожу на http://seobudget.ru/updates/. Но «предсказания» не всегда сбываются. В последнее время Яндекс изменил график.
Да что яндекс ? вот goe уже почти три месяза молчит, наверное в своем алгоритме запутался ;-^ )
К апу готовиться не надо, надо быть к нему всегда готовым.
Вот бы кто написал программу для предсказания апдейтов.
А для чего нужно списывать с pr-cy? Плагиатчиков не понимаю.
Да для новичков статья как раз. Особенно для людей которые еще не успели разобраться самостоятельно в регулярных выражениях. Автору большое спасибо.
Как же самому научиться вот так легко и непринужденно писать программы :)
Спасибо, очень нужная вещь в моем хозяйстве будет :)
Конечно полезный пост вы написали. Но видь это по моему не кому не нужно. Так видь как писали выше что каждый вебмастер заходит на pr-cy почти каждый день что бы посмотреть что и как :)
Хз, вроде пока не требуется такая фича. Но буду знать, если что.
Тоже постоянно захожу на pr-cy.ru просмотреть даты апдейтов, потому что это один из самых точных сервисов по анализу сайта. Но он часто недоступен и висит, поэтому парсить оттуда даты апдейтов думаю рисковано, иногда висит несколько дней.
А я обычно на счетчики смотрю. Так мне проще
Да я тоже раньше постоянно заходил на seobudget, но теперь что-то вообще не совпадает
Интересная тема, только я не до конца понял сам процесс)!
Что касается pr-cy юзаю регулярно!)
Классно, давно пытаюсь писать на делфи сервисы для веба, ваш урок – очередная ссыль в мою библиотеку.
А что то типа информера на блог как поставить ? чтобы считывал и отображал ?
Обожаю парсить данные с инета и отображать данные в своей программе.
Жаль что блог вы забросили.
Взаимно, а блог не забросил, буду писать, уже кое-что подготовил.
Только недавно восстановился со старого бэкапа – хостинг кинул) Ничего, прорвёмся
Ну регулярки и я не люблю, дело в том что это лишняя массна на приложение если оно выполняет пустяковую вешь, к тому же скорость в некоторых вещах снижается (в этом приложении не критично конешно, а вот в приложении которое генерирует текст снизило почти в 500 раз скорость выполнения) Плюс вижу разве что такой – если грамотно составить ргулярное вы ражение то при некоторых изменениях на сайте программа будет работать (писал регистратор аков в яндексе, там они время от времени что то меняют, приходилось вновь распарсивать idkey или id сесси, а регулярка выдират их четко и изменений в программу вносить нужно меньше).
Кстати про pr-cy – там часто информация отстает, бывало что апдейт прощел 3-4 дня назад а у них информация не менялась, я смотрю на серче в разделе апдейты – там сразу паника начинается если что то апнулось.
Кстати я инди пользуюсь а не Synapse – я чайник?
Про отставание ни разу не замечал.
Инди, синапс – одна ерунда :)