Необходимые знания
Мы старались сделать компонент "Парсер контента" простым и доступным каждому человеку, независимо от уровня его технических познаний. Именно поэтому мы не включили в состав компонента многие механизмы, которые были бы сложны для понимания большинством пользователей. Напирмер структуры DOM и регулярные выражения. Пользоваться компонентом сможет каждый, кто в состоянии просмотреть исходный код HTML-страницы и найти в нем интересующий его участок кода. При этом не требуется ни знания самого HTML, ни других специфических навыков. Давайте рассмотрим на примере, как именно проходит работа с парсером.
Шаг первый
Допустим мы хотим настроить публикацию новостей, посвященных теме "Наука и техника", с сайта N(или определенного раздела этого сайта). Для этого нам нужно перейти в интересующий нас раздел сайта, найти на странице блок с анонсами тех материалов, которые нам интересны. Допустим, итересующий нас фрагмент выглядит так:
Ка видно на картинке, данная страница является лентой статей из раздела "Техника" сайта N. Все публикации, касающиеся данной темы публикуются именно здесь. Изучим HTML-код данной страницы и найдем в нем блок с интересующими нас анонсами:
<div id="main" class="grid_12"> <div class="pathway"><a href="/" class="pathwaylink">Главная</a> → <a href="/poznavatelno" class="pathwaylink">Познавательно</a> → <a href="/poznavatelno/tehnika" class="pathwaylink">Наука и техника</a> </div> <div class="component"> <h5 class="p1">Механизмы и транспорт <div class="con_rss_icon"> <a href="/rss/content/27/feed.rss" title="RSS-лента"><img src="/templates/_solo_/images/icons/rss.png" alt="RSS-лента" border="0"></a> </div> </h5> <table border="0" cellspacing="2" width="100%"> <tbody> <tr> <td valign="top" width=""><div class="con_title"> <h5 class="p1"><a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/parovik-hhi-veka.html">Паровик ХХI века</a></h5> </div> <div class="con_desc"> <div class="con_image"> <img src="/images/photos/small/article439.jpg" alt="Паровик ХХI века" border="0" height="85"> </div> <div>У паровой машины - славное прошлое. В 2010 году исполнилось 245 лет со дня первого пуска стационарной паровой машины по проекту русского механика И.И. Ползунова. А 75 лет назад была построена первая советская высокооборотная паровая машина, которая могла... <div style="height:20px; position: absolute; bottom: 0; right:0;"> 30 марта 2015 - <a title="" class="null utip" rel="deniss" href="/users/deniss" style="color: rgb(102, 102, 102);">Денис Коринцев</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/parovik-hhi-veka.html" title="Подробнее">Подробнее</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/parovik-hhi-veka.html#c" title="Комментарии">0 комментариев</a> | 1209 просмотров </div> </div> </div></td> </tr> <tr> <td valign="top" width=""><div class="con_title"> <h5 class="p1"><a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/kak-avtobus-stanovilsja-avtobusom-a-gruz.html">Как автобус становился автобусом, а грузовик - грузовиком...</a></h5> </div> <div class="con_desc"> <div class="con_image"> <img src="/images/photos/small/article408.jpg" alt="Как автобус становился автобусом, а грузовик - грузовиком..." border="0" height="85"> </div> <div>Мало кто не знает, что первый в мире автомобиль появился на свет в 1886 году. Точнее, почти одновременно появились сразу два первых автомобиля — один построил Карл Бенц, другой Готлиб Даймлер. Многие опять-таки знают, что оба автомобиля были легковыми, для двух-трёх... <div style="height:20px; position: absolute; bottom: 0; right:0;"> 26 марта 2015 - <a class="null utip" rel="sergas" href="/users/sergas" style="color:#666">Сергей Коваленко</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/kak-avtobus-stanovilsja-avtobusom-a-gruz.html" title="Подробнее">Подробнее</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/kak-avtobus-stanovilsja-avtobusom-a-gruz.html#c" title="Комментарии">0 комментариев</a> | 537 просмотров <br> </div> </div> </div></td> </tr> ... <tr> <td valign="top" width=""><div class="con_title"> <h5 class="p1"><a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/vyzhimat-vodu-iz-vozduha.html">Выжимать воду. Из воздуха!</a></h5> </div> <div class="con_desc"> <div class="con_image"> <img src="/images/photos/small/article218.jpg" alt="Выжимать воду. Из воздуха!" border="0" height="85"> </div> <div>Это не магия, а достижение инженерной мысли! Прибор — обладатель премии Джеймса Дайсона в 2011 году — извлекает воду из воздуха. Airdrop — недорогое и простое в установке устройство с автономным питанием, помогающее решать проблемы с выращиванием урожая в засушливых... <div style="height:20px; position: absolute; bottom: 0; right:0;"> 2 мая 2014 - <a class="null utip" rel="admin" href="/users/admin" style="color:#666">Александр Малинский</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/vyzhimat-vodu-iz-vozduha.html" title="Подробнее">Подробнее</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/vyzhimat-vodu-iz-vozduha.html#c" title="Комментарии">0 комментариев</a> | 714 просмотров </div> </div> </div></td> </tr> <tr> <td valign="top" width=""><div class="con_title"> <h5 class="p1"><a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/banany-kak-osnova-avtomobilestroenija.html">Бананы как основа автомобилестроения</a></h5> </div> <div class="con_desc"> <div class="con_image"> <img src="/images/photos/small/article210.jpg" alt="Бананы как основа автомобилестроения" border="0" height="85"> </div> <div>Исследователи из университета бразильского города Сан-Паулу обнаружили, что полученные особым способом из волокон банановых и ананасовых пальм наночастицы способны сделать прочнее пластмассы, применяемые при изготовлении корпусов автомобилей. Более того, из такого... <div style="height:20px; position: absolute; bottom: 0; right:0;"> 25 апреля 2014 - <a class="null utip" rel="vladis" href="/users/vladis" style="color:#666">Владимир Вишневский</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/banany-kak-osnova-avtomobilestroenija.html" title="Подробнее">Подробнее</a> | <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/banany-kak-osnova-avtomobilestroenija.html#c" title="Комментарии">0 комментариев</a> | 471 просмотр <br> </div> </div> </div></td> </tr> </tbody> </table> <div class="pagebar"><span class="pagebar_title"><strong>Страницы: </strong></span><span class="pagebar_current">1</span> <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/page-2" class="pagebar_page">2</a> <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/page-2" class="pagebar_page">Следующая</a> <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/page-2" class="pagebar_page">Последняя</a> </div> <script type="text/javascript" src="/plugins/p_usertip/p_usertip.js"></script><script type="text/javascript" src="/plugins/p_usertip/cluetip/jquery.cluetip.js"></script>
Как мы видим, весь блок с интересующими нас анонсами публикаций находится между <div id="main" class="grid_12"> и <div class="pagebar">. В этом фрагменте кода находятся следующие ссылки:
/poznavatelno /poznavatelno/tehnika /rss/content/27/feed.rss /poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/parovik-hhi-veka.html /users/deniss /poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/kak-avtobus-stanovilsja-avtobusom-a-gruz.html /users/sergas /poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/vyzhimat-vodu-iz-vozduha.html
и т.д. При этом практический интерес для нас представляют только 3 ссылки:
/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/parovik-hhi-veka.html /poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/kak-avtobus-stanovilsja-avtobusom-a-gruz.html /poznavatelno/nauka-i-tehnika/mehanizmy-i-transport/vyzhimat-vodu-iz-vozduha.html
Эти ссылки ведут на страницы с полным текстом интересующих нас публикаций, остальные ссылки нам попросту не нужны. Причем нам даже неважен формат этих ссылок, парсер сам заменит относительные пути на абсолютные и исправит другие ошибки в URL.
Что можно сделать, чтобы получить список только нужных нам ссылок? Правильно, подвергнуть этот список фильтрации. В нашем случае все ссылки на страницы с публикациями имеют окончание .html, в то время как ссылки типа
/poznavatelno /poznavatelno/tehnika /rss/content/27/feed.rss /users/deniss
такого окончания не имеют. Просто введем в поле "Белый список" фразу ".html" и получим нужный нам результат. Парсер выберет ссылки, содержащие фразу ".html" и отбросит все остальные. У нас должна получиться примерно такая картина:
Таким образом мы объяснили парсеру, по каким страницам он должен ходить в поисках интересующего нас контента.
Шаг второй
Следующим делом мы должны научить парсер правильно обрабатывать страницу с полным текстом публикации чтобы парсер мог выбрать из HTML-кода статьи заголовок статьи, картинку к публикации, текст публикации и т.д. Звучит сложно и запутанно, однако на практике все делается очень просто. Итак, начнем.
Откроем любую ссылку из полученного нами в шаге 1 списка ссылок и изучим HTML-код страницы. В нашем случае мы увидим вот такой HTML-код:
<div id="main" class="grid_12"> <div class="pathway"><a href="/" class="pathwaylink">Главная</a> → <a href="/poznavatelno" class="pathwaylink">Познавательно</a> → <a href="/poznavatelno/tehnika" class="pathwaylink">Наука и техника</a> → <a href="/poznavatelno/nauka-i-tehnika/mehanizmy-i-transport" class="pathwaylink">Механизмы и транспорт</a> </div> <div style="opacity: 1;" class="component"> <h1 class="p1">Паровик ХХI века</h1> <div class="con_text"> <img src="/images/photos/medium/article439.jpg" alt="article439.jpg"> <div>У паровой машины - славное прошлое. В 2010 году исполнилось 245 лет со дня первого пуска стационарной паровой машины по проекту русского механика И.И. Ползунова. А 75 лет назад была построена первая советская высокооборотная паровая машина, которая могла «разгоняться» до 1800 об/мин! Стоит ли вспоминать об этом в наш век высоких технологий? Оказывается, да. Потому что паровые поршневые двигатели вновь могут найти себе применение. </div> ... </div> <div id="con_rating_block"> <table width="100%"><tbody><tr><td style="padding-top:4px;">
где
<h1 class="p1">Паровик ХХI века</h1>
это заголовок новости. Чтобы объяснить парсеру как искать заголовки статей на сайте N укажем в настройках задания следующее:
Как видно на рисунке, мы попросили парсер считать заголовком статьи текст, находящийся между тегами <h1 class="p1"> и </h1>.
<img src="/images/photos/medium/article439.jpg" alt="article439.jpg">
это изображение к статье. Как видно из кода изображение находится между тегами <div class="con_text"> и <div>. Просто указываем это в настройках парсера, все остальное за нас он сделает сам - удалит лишний HTML, получит URL картинки, загрузит ее на ваш сервер и создаст превью указанных вами размеров(micro, small, normal, big, original).
Как видно на картинке мы попросили парсер искать изображение к статье между тегами <div class="con_text"> и <div> и указали, что парсер должен создавать для изображений к публикациям превью размеров small, normal, big.
Итоги
Мы рассмотрели настроку задания для получения публикаций с сайта N - поиск ссылок на интересующие нас публикации, выбор заголовка статьи и изображения к статье. Если все, что написанно выше было вам понятно, то вы без труда сможете настраивать собственные задания самостоятельно. Настройка получения краткого и полного текста статьи полностью аналогична, поэтому описывать ее здесь мы не будем. Однажды настроив задание для сайта N мы можем получать публикации с этого сайта выполняя созданное задание вручную или доверив его запуск CRON-у, полностью автоматизировав публикацию контента на сайте.
Комментарии