- SEO-блог Остров МЫСЛЕЙ - http://isle-blog.ru -
Проблемы с Гугл.Фидбёрниром. Виды Фида. Парсинг RSS. Классы PHP для парсинга.
Posted By admin On 22 Ноябрь 2009 @ 10:56 In Ресурсы сети,Ссылки на ресурсы | 3 Comments
Дорогие подписчики! Сейчас на блоге Остров МЫСЛЕЙ [1] имеется небольшая проблема — повторная отправка о кросспостинге [2]. Меры по лечению RSS-канала принимаются.
Управление пингами в фиде настраивается здесь:
—> Publicize —> PingShot —> Activate/Inactivate
Управление сервисами, которые нужно пинговать настраивается здесь:
WordPress (ваш блог) —> Параметры —> Сервисы обновления.
Еще... файл в Гугл.Фидбёрнир [4] показывает, что "фид с ошибками", в то время, как анализатор сообщает, что "фид в порядке". Думаю, роботы не могут правильно отпарсить РСС-ленту и посчитать все вхождения, идет зацикливание кода или что-то еще… исправил, проверю, изменится ситуация или нет. Еще нашел некоторые мелкие косяки… Попробую подкрутить все "ржавые гайки"… Управление RSS-канала осуществляется здесь:
Дашборд (англ. DashBord — админ.панель) —> Параметры —> Чтение —> Настроки чтения:
Парсинг документов сети
Нужную информацию можно сграбить при помощи потокового RSS-канала, но иногда такой способ бывает не совсем удобен, поэтому, программисты используют регулярные выражения в функциях PHP preg_match() и preg_match_all(), если требуется украсть (отпарсить, от агл. parse — "анализ, разбор") какую-либо информацию с какой-либо страницы сети Интернет. Но эти функции рассмотрим в следующих статьях.
Парсинг (англ. parsing) — это анализ, разбор данных на составляющие. Роль парсера в двух словах заключается в следующем: найти файл, загрузить его в память сервера (ОЗУ), найти в нем определенные теги, присвоить их значения переменным, закрыть файл, выгрузить его содержимое из памяти и передать переменные обработчику, который в зависимости от условий выведет значения переменных на экран. Чтобы не выполнять столько сложных манипуляций и не писать сложный PHP-код, существуют готовый классы, которые просто передают нужные значения, их не нужно обрабатывать, а можно сразу же выводить на экран.
Некоторые полагают, что проще работать со стандартным DOM (для php5, DOM XML для php4), а также XSL (XSL расшифровывается как "The Extensible Stylesheet Language Family", для php5, XSLT — для php 4) или использовать SAX-парсеры («Simple API for XML») — способ последовательного чтения/записи XML-файлов. Обычно SAX-парсеры требуют фиксированного количества памяти для своей работы, но не позволяют изменять содержимое документа. Все, что делает SAX-парсер, это сообщает вызвавшему приложению о встреченных распознанных элементах XML-разметки или о встреченных ошибках. Связь парсера с вызывающим приложением, как правило, осуществляется посредством функций обратного вызова.
Есть два типа парсеров. Одни строят дерево элементов (), другие генерируют события, event-driven (). Первые дают кучу объектов один в другом, вторые генерируют событие когда попадается открывающийся тег, атрибут в теге, текст между тегами и закрывающийся тег. Далее с этими событиями и получаемыми с ними данными можно делать что угодно.
Популярные библиотеки (классы) для парсинга SimplePie [7] и другие.
Ссылки:
Парсинг RSS-канала
Фид (англ. feed — "питание, подача, подпитка, загрузка") — это общее определение всех XML-форматов передачи данных, т.е. Атом, RSS и прочие.
XML-файл, для импорта / экспорта для CMS WordPress назвали "расширенным RSS" — WXR.
Интерфейс прикладного программирования (API) постоянно развивается. Благодаря API, можно по-новому создавать статистику каналов данных. Используя в работе API управления RSS-каналами, издатели могут также создавать и управлять настройками RSS-каналов.
Ссылки:
Что такое RSS?
Зачем же собственно нужен RSS, если можно просто тупо отпарсить страницу и без него? — дело в том, что RSS — это уже отпарсенная страница, очищенная от всевозможных тегов HTML... это простой текст, который нужен для быстрого оповещения кого-либо, что очень удобно для оповещения, например, погоды, курса валют и других новостей, на которые можно подписаться по желанию. Как только система управления сайтом CMS создает (обновляет) файл данных (XML-файл), то она пингует (посылает уведомление) другим системам, который этот файл забирают...
XML-файл — обычный текстовый файл, содержащий в себе весь текст сайта, но стоит помнить об ограничении... Файл импортируется правильно программами и онлайн-скриптами (RSS-агрегаторами), если он не превышает 512 кб.
XML-формат придуман как универсальный для передачи всей необходимой текстовой информации в едином универсальном виде для максимальной совместимости читающих и передающих сервисов / программ.
Далее, когда XML-файл подхвачен, можно применить свои стили для формирования красивого, удобного и понятного интерфейса. Собственно, если трансляция (оповещение о новостях) RSS-канала идет не в закрытую ленту, а на веб-ресурс, то в данном случае, эту трансляцию в SEO можно назвать "внешней оптимизацией сайта". Если ссылки на приеме будут оставаться открытыми для индексации (чтения) их поисковыми роботами, то это поможет значительно поднять видимость сайта в сети.
Парсить, т.е. извлекать нужную информацию из XML-файла довольно-таки сложновато, поэтому разработчики плагинов для CMS WordPress (Вордпресс), чтоб упростить обработку файла и вывод данных, используют классы, написанный на PHP. Таких классов много, их задача — облегчить парсинг (вытаскивание текстовой информации) из XML-файла не напрямую, а через свои внутренние теги, это позволяет не писать огромные скрипты для обработки информации, а воспользоваться уже готовыми решениями, что значительно упрощает работу. Но многие классы были заброшены и долгое время не обновлялись, их совместимость с передачей информации низка и не всегда работает... а также приходится иногда подстраиваться под определенные версии PHP, если проверка не ведется в самом классе.
Парсер RSS-каналов своими руками
Для парсинга SimplePie [7], вот так выглядит RSS [11]-граббер на классе [11]SimplePie [11] [11]в работе [12], скачать здесь [13]. Если кому нужно будет, доработаю, обращайтесь. Для тех, кто не в курсе, вставить новостную RSS-ленту своих друзей очень легко, достаточно просто заинклюдить файл (один файл вставить во второй) в нужный шаблон своей Темы, например, в удобное место файла index.php вот так:
<?php include('isle_rss.php'); ?>
К сожалению, данный вариант имеет 100%-ю совместимость только для CMS WordPress и подобных, каналы бесплатных блогохостингов принимает только частично, т.е. там нет некоторых данных, например, источник РСС, автор и т.д., потому как они изначально не заложены в передачу, кроме самого поста, даты публикации и некоторых других данных. Еще неудобством является то, что нужно указывать для правильного парсинга не только доктейп HTML-документа, но и его HTML-версию:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://w3.org/1999/xhtml" xml:lang="en">
Также можно почитать документацию о настройках, кому интересно: .
Для парсинга можно также использовать готовые агрегаторы WP-o-Matic [15], который поддерживает также импорт/экспорт devthought.com [16].
Парсинг RSS средствами CMS WordPress
Продвинутый парсинг RSS средствами CMS WordPress с использованием функции fetch_rss(), выглядит так:
<?php // Get RSS Feed(s)
$uri = "http://isle-blog.ru/feed/";
include_once(ABSPATH.WPINC.'/rss.php');
$rss = fetch_rss($uri);
$maxitems = 5; //Максимум топиков одного сайта.
$items = array_slice($rss->items,0,$maxitems);
?>
<ul>
<?php
if (empty($items)) echo '<li>No items</li>';
else
foreach ($items as $item) : ?>
<li>
<a href='<?php echo $item['description']; ?>' title='<?php echo $item['title']; ?>'>
<?php echo $item['title']; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
Либо можно воспользоваться встроенной функцией wp_rss():
<?php
include_once(ABSPATH.WPINC.'/rss.php');
wp_rss('http://isle-blog.ru/feed/',5);
?>
Ссылки:
RSS-форматы в CMS WordPress
В CMS WordPress встроенны следующие форматы Фида в функцию get_bloginfo():
Вывести Фиды на экран можно так ($show — формат Фида):
<?php $rss = get_bloginfo($show); echo $rss; ?>
либо так:
<?php bloginfo($show); ?>
Ссылки в CMS WordPress без редиректа (подстройки ЧПУ) имеют такие адреса:
С редиректом выглядят так:
Подробней о настройке WordPress_Feeds [22].
RSS-форматы
Atom — основанный на REST [23] для интерфейсов веб-служб.
Ссылки:
GData — это новый перспективный протокол от Гугл, основанный на форматах синдикации Atom 1.0 и RSS 2.0, а также на протоколе публикации Atom. В различных контекстах полезно иметь возможность отправить серверу запрос и получить ответ, содержащий список соответствующих этому запросу результатов. Ни Atom, ни RSS не дают такой возможности, но в Atom имеется механизм расширений. С помощью этого механизма стандартных расширений GData может выполнять запросы.
Ссылки:
OPML-файл — язык разметки структуры, основанный на XML-формате, служащий для переноса в стандартную электронную форму информации о потоках, которые могут группироваться в ленты. Этот стандарт пригоден для создания списков, включающих как RSS-потоки, так и потоки других форматов — RDF, Atom и др.
w3.org [27]) для описания ресурсов, в особенности — метаданных о ресурсах. В основе этой модели лежит идея об использовании специального вида утверждений, высказываемых о ресурсе. Каждое утверждение имеет вид «субъект — предикат — объект» и в терминологии RDF называется триплетом. Например, утверждение «Небо голубого цвета» в RDF-терминологии можно представить следующим образом: субъект — «небо», предикат — «имеет цвет», объект — «голубой». Для идентификации субъектов, предикатов и объектов в RDF используются URI (англ. Uniform Resource Identifier — унифицированный (единообразный) идентификатор ресурса.).
Одной из главных целей RDF является предоставление утверждений одинаково в машинно- и человеко-распознаваемом виде.
Существует несколько синтаксисов для представления RDF-информации, самые распространенные из которых: RDF/XML, триплеты (Нотация 3) и графовая модель.
Для обработки RDF имеется несколько языков запросов: например, RQL, RDQL, SPARQL.
Ссылки:
Дополнительные ссылки по теме.
Википедия: , , , ,
Стандарты: .
Article printed from SEO-блог Остров МЫСЛЕЙ: http://isle-blog.ru
URL to article: http://isle-blog.ru/resources-internet-what-is-it/feed-channel/
URLs in this post:
[1] Остров МЫСЛЕЙ: http://isle-blog.ru/
[2] о кросспостинге: http://isle-blog.ru/advertisement-sites-focus-secrets/microbloging-crossposting-advance/
[3] feedburner.google.com: http://feedburner.google.com/
[4] Гугл.Фидбёрнир: http://feedburner.com/
[5] DOM XML: http://php.net/manual/en/ref.domxml.php
[6] Expat: http://php.net/manual/en/ref.xml.php
[7] SimplePie: http://simplepie.org/
[8] saxproject.org: http://saxproject.org/
[9] http://ru.wikipedia.org/wiki/SAX: http://ru.wikipedia.org/wiki/SAX
[10] http://code.google.com/intl/ru-RU/apis/feedburner/: http://code.google.com/intl/ru-RU/apis/feedburner/
[11] RSS: http://isle-blog.ru/news/
[12] в работе: http://isle-blog.ru/newsrss/
[13] здесь: http://isle-blog.ru/wp-content/themes/default/isle_rss.php
[14] настройки SimplePie: http://simplepie.org/wiki/plugins/wordpress/simplepie_plugin_for_wordpress/customization
[15] WP-o-Matic: http://wordpress.org/extend/plugins/wp-o-matic/
[16] devthought.com: http://devthought.com/projects/wordpress/wp-o-matic-the-wordpress-rss-agregator/
[17] wp_rss: http://codex.wordpress.org/Function_Reference/wp_rss
[18] fetch_rss: http://codex.wordpress.org/Function_Reference/fetch_rss
[19] http://codex.wordpress.org/Category:Functions: http://codex.wordpress.org/Category:Functions
[20] MagpieRSS and RSSCache: http://magpierss.sourceforge.net/
[21] http://codex.wordpress.org/Function_Reference/get_bloginfo: http://codex.wordpress.org/Function_Reference/get_bloginfo
[22] WordPress_Feeds: http://codex.wordpress.org/WordPress_Feeds
[23] REST: http://xml.com/lpt/a/2004/12/01/restful-web.html
[24] RFC 4287: http://tools.ietf.org/html/rfc4287
[25] http://w3.org/2005/Atom: http://w3.org/2005/Atom
[26] GData: http://code.google.com/intl/ru-RU/apis/gdata/
[27] w3.org: http://w3.org/
[28] http://ru.wikipedia.org/wiki/URI: http://ru.wikipedia.org/wiki/URI
[29] RSS-агрегатор: http://ru.wikipedia.org/wiki/RSS-агрегатор
[30] OPML: http://ru.wikipedia.org/wiki/OPML
[31] RDF: http://ru.wikipedia.org/wiki/RDF
[32] Atom: http://ru.wikipedia.org/wiki/Atom
[33] RDF: http://ru.wikipedia.org/wiki/Resource_Description_Framework
[34] opml.org: http://opml.org/
Click here to print.
Copyright © 2008 SEO-блог Остров МЫСЛЕЙ. All rights reserved.