
На многих сайтах манимейкеров и так называемых Интернет-бомжей в правом верхнем углу выведена информация о днях апдейта и выдачи поисковых систем.
Итак, что для этого нам необходимо? Найти потенциальный сайт для парсинга с него информации, желательно надежный и старый ресурс. Думаю, все догадались, какой ресурс подойдет?
Смотрим исходный код сайта, с которого будем парсить информацию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <table class="up" width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td class="nup">Яндекс тИЦ</td> <td class="dup"><acronym title="35 дня(ей) назад">31.08.2009</acronym></td> </tr> <tr> <td class="nup">Google PR</td> <td class="dup"><acronym title="103 дня(ей) назад">24.06.2009</acronym></td> </tr> <tr> <td class="nup">Яндекс выдача</td> <td class="dup"><acronym title="3 дня(ей) назад">02.10.2009</acronym></td> </tr> </table> |
Как видно нужны значения находящиеся в 3 однородных тегах.
1 | <acronym title="">Здесь</acronym> |
Начинаем писать наш парсер
1. Берем контент с заданного урла;
1 | $uData = file_get_contents ('Здесь URL сайта с которого парсим'); |
2. Если сайт донор в кодировке windows-1251, а наш использует utf-8, конвертируем через iconv. Если наоборот делаем в обратной последовательности. Ну а если кодировки сопадают не используем данный кусок кода;
1 | $uData = iconv ('windows-1251', 'utf-8', $uData); |
3. Собственно парсим нужную нам информацию с помощью функции preg_match_all;
1 | $fData = preg_match_all ('#<acronym title="(.+)">(.+)</acronym>#Uis', $uData, $update); |
4. Теперь мы имеем несколько массивов, отфильтруем нужные нам значения и выведем их;
1 2 3 | <div>Яндекс тИЦ < ? echo ($update[2][0]) ?></div> <div>Google PR < ? echo ($update[2][1]) ?></div> <div>Яндекс выдача < ? echo ($update[2][2]) ?></div> |
5. Общая конструкция парсера выглядит так.
1 2 3 4 5 6 7 8 9 | <h3>Апдейты</h3>
< ?
$uData = file_get_contents ('Здесь URL сайта с которого парсим');
$uData = iconv ('windows-1251', 'utf-8', $uData);
$fData = preg_match_all ('#<acronym title="(.+)">(.+)#Uis', $uData, $update);
?>
<div>Яндекс тИЦ < ? echo ($update[2][0]) ?></div>
<div>Google PR < ? echo ($update[2][1]) ?></div>
<div>Яндекс выдача < ? echo ($update[2][2]) ?></div> |
Это простая модель парсера. В идеале нужную информацию парсят в файл или БД, запуская парсер по Cron в определенное время и обновляя её, но об этом в следующий раз!
]]>Сергей]]>16 декабря 2009 в 16:09
Спасибо, а когда пойдет речь о записи в файл?
В смысле, когда следующий раз?
]]>Khlyupin]]>25 декабря 2009 в 18:28
В ближайшее время, 23 дня отсутствовал, об этом читайте в ближайшем посте
]]>Сергей]]>30 декабря 2009 в 02:11
Сменился дизайн сайта откуда парсим, там изменили кодировку на UTF, используем iconv
]]>Khlyupin]]>30 декабря 2009 в 18:36
Мой код совершенно другой и секретен
]]>Сергей]]>31 декабря 2009 в 14:59
Ну у меня все работает
Уже сделано с сохранением в файл и обновлением через cron раз в два часа
]]>Khlyupin]]>31 декабря 2009 в 22:44
Сергей, только сегодня заметил смену дизайна ресурса, наверное было региональное тестирование, на смену кода мне понадобилось 30 секунд