Как распарсить <yandex:full-text>
Суть задачи: есть xml, отдаваемый для Яндекс.Новости, необходимо из него получить содержимое тега
Решение, на самом деле, простое, главное хорошо прочитать мануал:
<?php // Создать контекст и получить XML с сайта $path = 'http://inforos.ru/yandex.xml'; $ctx = stream_context_create( array( 'http' => array( 'timeout' => 6 ) ) ); $file = file_get_contents( $path, 0, $ctx ); if ( $file ) { // Распарсить полученный XML $rss = simplexml_load_string( $file ); foreach ( $rss->channel->item as $item ){ $namespaces = $item->getNameSpaces( true ); $yandex = $item->children( $namespaces[ 'yandex' ] ); $full_text = (string) $yandex->{'full-text'}; echo ( $full_text ); echo ( "\n\n<hr />\n\n" ); } } ?>
Пример можно посмотреть у меня в песочнице.
Ссылки
- PHP: SimpleXML — Manual
- Описание используемых при трансляции в Яндекс.Новости элементов с комментариями
Как правило, самое главное в этом деле — синомизировать текст. В противном случае мы просто увеличиваем вес тому же Яндексу
Скрипт был написан не для воровства контента, а для синхронизации новостей между проектов посредством RSS
Приветствую.
А подскажите, можно ли адаптировать под яндекс формат плагин-агрегатор FeedWordPress?
Плагин прекрасно понимает стандартный RSS, но отказывается принимать фид для новостей Яндекс, в частности полный текст там заключен в тег
Само собой можно, в чем у вас возникла проблема?
FeedWordPress позволяет публиковать материалы из указанного RSS-фида стороннего сайта. И если в фиде есть полный текст, то парсится он, если нет, то только описание с заголовком. А сегодня многие новостные сайты используют нестандартные форматы, заточенные под агрегатор Яндекс.новостей (например svopi.ru/rss.xml), где полный текст размещен в блоке , который не стандартен для RSS и, соответственно, не виден. Нашел решение авторов по созданию кастомного шаблона (http://codex.wordpress.org/Customizing_Feeds), но сам в PHP вообще не соображаю. Может подскажете, куда этот кусок кода вставлять?
Очевидно, что внутри плагина FeedWordPress. Покажите ваши попытки, например, на codepen, github
Автор пишет (http://codex.wordpress.org/Customizing_Feeds), что можно создать свой шаблон используя remove_all_actions и load_template, расширив существующий шаблон для RSS2.
Тут (https://github.com/WordPress/WordPress/blob/master/wp-includes/feed-rss2.php) я нашел шаблон РСС2, можете подсказать, что туда добавить, чтобы парсер понимал ?