Всея ПЫХА epsyl adw0rd Мавр ГО Irinax http://hell.helldude.ru - это пиздец

парсинг сайтов. Теория. Курсы валют центробанка

Рубрики: (Без рубрики, Парсинг) Автор: phpdude 12-12-2008

Теги : , , , , , , , , , ,

такс, я просто смотрю на статистику ливинтернета и замечаю что люди часто ищут «парсинг пхп» … думаю стоит начать рассказывать эту тему)

парсинг – сбор нужной информации со страниц интернета. парсинг бывает необходим для люых целей – начиная от котировок валюты, погоды с гисметео, страниц интересных нам сайтов, результатов поисковой выдачи и заканчивая авторизацией на сайт «вконтакте» для поиска музыки аля «вплеер.ру».

итого парсинг – сбор инетересующей нас информции со страниц.

что для этого необходимо :)

  1. сервер подключенный к интеренту с установленным php.
  2. allow_url_fopen или curl extension(было бы шикарно) или fsockopen(сам пользуюсь курлом, но есть люди немоей веры).
  3. свободное место на диске.

чтобы парсить страницы, нам надо их сначала скачать :)

скачивать страницы можно с помощью перечисленных в пункте 2 средств.

$string = file_get_contents(«http://www.cbr.ru/»);

после того как мы получили html код интересующей нас страницы в виде строки, мы можем ее обрабатывать. заходим браузером на страницу http://www.cbr.ru/. открываем «просмотр HTML» кода страницы средствами браузера (в firefox – ctrl+U). дальше в диалоговое окно поиска текста вводим «Доллар США», и видим кусок html кода.

<tr>
<td>
<table cellspacing=«0″ cellpadding=«0″ width=«5″ align=«left» border=«0″>

<tr>
<td width=«5″></td>
</tr>
</table>
<img height=«11″ alt=«Доллар США» hspace=«2″ src=«/images/icon_dollar.gif» width=«11″ align=«left» vspace=«2″ border=«0″>Доллар
США</td>
<td></td>
<td class=«digit» align=«right»>27,8671&nbsp;</td>
<td></td>

<td class=«digit» align=«right» nowrap>27,9310&nbsp;<IMG alt=‘up +0.0639 border=0 height=8 hspace=2 src=/images/icon_up.gif width=7></td>
</tr>
<tr>
<td>
<table cellspacing=«0″ cellpadding=«0″ width=«5″ align=«left» border=«0″>
<tr>
<td width=«5″></td>
</tr>

</table>
<img height=«11″ alt=«Евро» hspace=«2″ src=«/images/icon_evro.gif» width=«11″ align=«left» vspace=«2″ border=«0″>Евро</td>
<td></td>
<td class=«digit» align=«right»>36,1715&nbsp;</td>

<td></td>
<td class=«digit» align=«right» nowrap>36,6678&nbsp;<IMG alt=‘up +0.4963 border=0 height=8 hspace=2 src=/images/icon_up.gif width=7></td>
</tr>

класс. как раз в этом куске кода и находятся интересующие наскурс доллара и евро. ну что, уже хорошо :)

вопрос, какбы нам взять эту информацию? для разбора текста я рекомендую использовать регулярные выражения в пхп это функции preg_* сейчас могу предположить что мы будем использовать preg_match и preg_match_all

в полученном куске html ищем особенности верстки – 90% верстки имеют интересные нам значения обрамленные в какие нить html теги с css классами уникальными, ну если нет уникальности, то просто алгоритм поиска слегка усложняется, но остается все равно прозрачный. и так, смотрим верствку и замечаем, что наши значения

<td class="digit" align="right">27,8671&nbsp;</td>
<td class="digit" align="right">36,1715&nbsp;</td>

обрамлены в специфичные html теги – сначала

<td class="digit" align="right">

и в конце

</td>

что чрезвычайно удобно для наших целей :)

составляем следующее регулярное выражение для поиска нужных значений из результатов проведенного нами анализа – #<td class=»digit» align=»right»>(.*?)&nbsp;</td>#. подставляем в функцию preg_match_all и получаем :)

preg_match_all(«#<td class=\»digit\» align=\»right\»>(.*?)&nbsp;</td>#ism»,$string,$values);

потом небольшое украшательство :)

$values = $values[1];

и вуаля!

print_r($values);

дает нам результат

Array
(
    [0] => 27,8671
    [1] => 36,1715
)

где первая цифра в массиве – курс доллара, вторая – курс евро соответственно :)

это было сложно? я думаю что нет. надеюсь многие после такой статьи перестанут задавать глупые вопросы на форумах :)

В следующей ститье будем парсить результаты выдачи яндекса.

исходники прилагаются

Комментарии RSS тут:

Всего отзывов: 20 на парсинг сайтов. Теория. Курсы валют центробанка

Оставьте свой отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

О САЙТЕ

Крик души может быть будет на этом сайте, а может и будет что-нибудь другое :)