Яндекс новости rss


Все главные новости России и Международных новостных каналов в одном месте. На данном ресурсе собраны лучшие новостные площадки. Здесь вы найдете новости любого, интересующего вас содержания: Лучшие новостные площадки, Новости спорта, Автоновости, Общественные новости, Новости туризма.

RSS-канал новостей сейчас присутствует практически на каждом сайте.

Что такое RSS канал

RSS канал — это лента новостей сайта, блога. Т.е это выстроенные в определенном порядке, обычно последняя новость наверху, небольшие анонсы статей. Обычно этот блок содержит 3-5 анонсов.

Чтобы увидеть более расширенную ленту новостей нужно перейти по ссылке RSS, часто обозначают таким значком RSS-канал.

Новостная лента, на которую ведет такая ссылка служит именно для подписки на нее. Просмотр содержимого возможен в специальной программе, браузере, или сервисе.


Зачем нужно RSS

Для чего же нужен RSS канал? Ответ прост — лента новостей нужна для подписки на нее, и просмотра ее у себя в специальной программе, браузере, или сервисе.

Допустим Вам интересны несколько блогов. Вы их постоянно читаете. И Вам приходится каждый раз для просмотра этих блогов, дабы не пропустить, что-нибудь интересное, заходить на каждый отдельно. Получится намного эффективнее, в данном случае, подписаться на все интересующие вас блоги, посредством RSS ссылки, и просматривать анонсы всех своих блогов в специальной программе, браузере, или удобном сервисе.  А просматривать заинтересовавшие статьи, переходя по ссылке анонса.

Подведем итог: При помощи подписок посредством RSS-ссылок, на интересующих Вас сайтах, Вы формируете уникальную для себя ленту новостей всех ресурсов в интернете, которые Вы периодически читаете.

news-rss.ru

Яндекс.Новости – новостной агрегатор. Как добавить сайт, правила добавления

Яндекс новости rssЯндекс.Новости — автоматическая служба обработки новостей, новостной агрегатор, доступен по адресу news.yandex.ru.

Свои версии Яндекс.Новости имеет в разных странах:


— Украина http://news.yandex.ua
— Беларусь http://news.yandex.by
— Казахстан http://news.yandex.kz

Все важные новости доступны на главной странице Яндекс Новостей, далее ориентируясь на ваши предпочтения, вы можете углубляться в тематику и читать по ней новости. Информация предоставляется в полном объёме в текстовом, графическом и видео форматах. Что бы пользователь получил по-настоящему объективную и полную информацию все поступившие материалы автоматически группируются в сюжеты без вмешательства человека.

Служба работает круглосуточно, проверяет и собирает новости со всего мира ежеминутно, создаёт для вас актуальную картину дня. Информацию для Яндекс.Новостей предоставляют ведущие Российские и Мировые СМИ, для этого с ними заключены специальные договорённости.

Условия добавления сайта в Яндекс Новости

  • Новостные материалы на сайте должны публиковаться минимум 1-3 месяца. Если на сайте нет новостных материалов, вас точно не возьмут.
  • Материалы на сайте должны быть в свободном доступе, должны всегда быть доступны без регистрации на сайте.
  • С примерами сайтов партнёров можно ознакомиться здесь http://news.yandex.ru/smi/.
  • Все сайты планирующие работать с новостным сервисом должны ознакомиться и принять «Условия использования сервиса Яндекс.Новости», ссылка на условия.
  • Должен быть настроен файл экспорта RSS, у Яндекса.Новостей свои требования к этому файлу, они описаны здесь getDoc.pdf, требования соответствуют стандарту RSS 2.0
    Яндекс новости rss

  • Каждый материал должен быть размещён на уникальном URL адресе.
  • Тематика материалов может быть любой, но соответствовать законам Российской Федерации.
  • Содержание сайтов должно быть связано с новостями. Пример информации, которая не должны быть на сайте: анекдоты, прогнозы погоды, литературные произведения и тп.
  • Содержание должно быть оригинальным. Если вы публикуете дубликат новости на вашем сайте, то он попадёт в Яндекс Новости со статусом «дубликат» и не будет участвовать в поиске. Оригинальные материалы определяются по времени публикации и содержанию.
  • Требований к периодичности обновлений на вашем сайте нет. Рекомендуемые требования материалы на сайте должны обновляться один раз в три дня и чаще.
  • Проверить есть ли ваш сайт в Яндекс Новостях можно по ссылке http://news.yandex.ru/smi/lenta, подставив в неё ваш URL (без точки и доменной зоны) это пример что сайт lenta.ru есть в Яндекс.новостях.

Как добавить сайт в Яндекс.Новости

Присылайте заявку адрес вашего сайта и информацию по нему на почту info@news.yandex.ru в ней должны быть указаны: описание сайта, адрес сайта, периодичность публикаций, тематика. Заявка будет рассмотрена и в ответ будут высланы инструкции по дальнейшим действиям.

Из уникальных плюсов для сайта после добавления в Яндекс.Новости можно выделить следующие: мгновенная индексация страниц, дополнительный трафик (в некоторых случаях до 30%).


Записи по теме:

Теги: Яндекс

Смотри также:

steptosleep.ru

Русскоязычные каналы

Каталог русских RSS-каналов http://www.kanban.ru
Новости Yandex в формате RSS http://news.yandex.ru/export.html

NEWSru.com — http://www.newsru.com/plain/rss/all.xml
Газета.ru — Все новости (RSS) ( http://www.gazeta.ru/export/gazeta_rss.xml )
Lenty.RU — [ссылка появится после проверки модератором]
Подробности — (http://www.podrobnosti.com.ua/export/)
Lenta.ru — (http://lenta.ru/l/r/EX/import.rss)
Полит.РУ — (http://www.polit.ru/rss/index.xml)
Портал «Юридическая Россия» ( http://law.edu.ru/rss/news.rss )
Водка он-лайн — http://vodka.com.ua/export/rss.xml
Портал «ПлейМобайл» — http://playmobile.ru/news/rss
3Dnews — http://www.3dnews.ru/expnews/rss/newsrss.xml

Список RSS-фидов русскоязычного сегмента Интернет:
http://my.yandex.ru/rss.opml

Интересные новостные фиды:

Аргументы и Факты — http://www.aif.ru/info/rss.php?magazine=aif
АвтоОБЗОР — [ссылка появится после проверки модератором]
АвиаПорт.Ру — [ссылка появится после проверки модератором]
Деловая Хроника — http://www.chronicle.ru/l/r/EX/rsschannel.xml
K2Kapital — http://ad.k2kapital.com/cbp/mynetscape/mynews.news
Linux.org.ru — http://images.linux.org.ru/getrss.php3
PalmQ Online — http://www.palmq.net/backend.php
СПОРТ сегодня — http://www.sports.ru/sports_docs.xml
TRAVEL.RU.


е о путешествиях — http://www.travel.ru/inc/side/yandex.rdf
АПК-Информ — http://www.apk-inform.com/yandextr.php
ФОНТАНКА.РУ — http://www.fontanka.ru/_transmission_for_yandex.thtml
IMA Press. Тема дня — http://www.ima-press.ru/rss.php?newsblock=themelimit=1
Журнал «Итоги» — http://www.itogi.ru/WebExport.nsf/Anons/itogi.xml
Остров. Новости Донбасса — [ссылка появится после проверки модератором]
ПОЛИТ.РУ — http://www.polit.ru/rss/index.xml?yandex_mode=1
PRAVDA.Ru — http://export.pravda.ru/yandex.txt
PR NEWS (все пресс-релизы компаний) — http://www.prnews.ru/yandex/business.asp
Энциклопедия поисковых систем — http://www.searchengines.ru/news/news.rdf
Сетевой журнал — [ссылка появится после проверки модератором]

otvet.mail.ru

Мы решили подключить наш сайт к Яндекс.новостям. Яндексу нужна RSS особого вида, та, что livestreet отдаёт из коробки ему не подходит.
За основу был взят ActionRSS, который есть в ливстрите с самого начала. Вообще-то я в php ни в зуб ногой, на работе пишу на c++, и ливстрит увидел в первый раз в жизни, так что работа эта заняла у меня не меньше 4 часов. В том числе потому что документацию к движку я тогда найти не смог.

Вот такие задачи следовало решить:


  • добавить пространство имён yandex в RSS
  • сменить описание (<description>) канала на что-то более информативное, чем «Новости по-ростовски / RSS Channel»
  • добавить логотип сайта размером «не более 100 пикселей по максимальной стороне».
  • добавить в каждую новость элемент <yandex:full-text>, содержащий текст новости без единого HTML-тега.
  • заменить элементы <category>, описывающие набор тегов, на один элемент <category>, описывающий рубрику (в нашем случае — блог публикации)
  • выпилить все ненужные Яндексу элементы из RSS
  • сделать систему фильтрации новостей для Яндекса. У нас сайт гражданской журналистики, который помимо новостей содержит анонсы всяких культурных штук, крики души пользователей, непроверенные сообщения — в общем, всякие штуки, за которые на Яндекс-новостях могут забанить

А такие задачи решить было желательно, но не обязательно:

  • добавить картинки и прочие media-элементы из новости в виде элементов <enclosure>
  • добавить ссылки по теме новости в виде элемента <yandex:related>
  • добавить элемент <author> с именем-фамилией автора сообщения

Проблему фильтрации договорились решить следующим образом — в RSS попадают только посты с главной, помеченные определенным тегом. Чтобы он не мозолил глаз огромным шрифтом в облаке тегов, я отключил его показ в облаке. Это, конечно, костыль, и рано или поздно я эту радость заменю чем-нибудь поприличнее — например, отдельным булевым полем в базе и галочкой «Пустить на Яндекс» у администратора. Или хотя бы выделю в плагин.

Очень не хотелось писать парсер, который бы вылавливал медиа-элементы из новости и добавлял их в RSS как элементы <enclosure>. Тем более, что вообще-то не всякую картинку из статьи стоит добавлять к новости. Зато у нас шаблон simple, который позволяет к каждому посту добавить картинку-preview. Вот её мы и решили запихивать в RSS. На всякий случай я сделал эту функциональность отключаемой.

RSS-лента будет располагаться по адресу /yandex_rss. Полученная в результате RSS-лента была подключена к Яндексу без малейших нареканий.

А вот получившийся код.
/classes/actions/YandexRss.class.php

<?php  /*-------------------------------------------------------  *  * LiveStreet Engine Social Networking  * Copyright © 2008 Mzhelskiy Maxim  *  *--------------------------------------------------------  *  * Official site: www.livestreet.ru  * Contact e-mail: rus.engine@gmail.com  *  * GNU General Public License, version 2:  * http://www.gnu.  

Rss() { header('Content-Type: application/rss+xml; charset=utf-8'); } protected function RegisterEvent() { $this->AddEvent('index','RssYandex'); } protected function RssYandex() { $aResult=$this->Topic_GetTopicsGood(1,Config::Get('module.topic.per_page')*2,false); $aTopics=$aResult['collection']; $aChannel['title']=Config::Get('view.name'); $aChannel['link']=Config::Get('path.root.web'); $aChannel['description']=htmlspecialchars(Config::Get('yandex_rss.description')); $aChannel['language']='ru'; $aChannel['managingEditor']=Config::Get('general.rss_editor_mail'); $aChannel['generator']=Config::Get('view.name'); $aChannel['image']=Config::Get('yandex_rss.image'); $bPrintPreview=Config::Get('yandex_rss.print_preview'); $sAllowTag=Config::Get('yandex_rss.allow_tag'); $topics=array(); foreach ($aTopics as $oTopic){ if (in_array($sAllowTag, $oTopic->getTagsArray())) { $item['title']=$oTopic.

} } $this->InitRss(); $this->Viewer_Assign('aChannel',$aChannel); $this->Viewer_Assign('aItems',$topics); $this->SetTemplateAction('index'); } /** * выдирает адрес preview в зависимости от типа топика * если preview нет, возвращает '' * */ protected function getPreviewUrl($oTopic) { if ($oTopic->getType()=='photoset') { $oMainPhoto=$oTopic->getPhotosetMainPhoto(); return $oMainPhoto->getWebPath('220crop'); } else if ($oTopic->getPreviewImage()) { return $oTopic->getPreviewImageWebPath('220crop'); } else { return ''; } } /** * Формирует текст топика для индексации RSS роботом яндекса * */ protected function getYandexFullTopicText($oTopic) { $sText=$oTopic->getText(); return htmlspecialchars(strip_tags($sText)); } } ?>

/templates/skin/ваш темплейт/actions/ActionYandexRss/index.tpl

 

<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:yandex="http://news.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/"> <channel> <title>{$aChannel.title}</title> <link>{$aChannel.link}</link> <description>{$aChannel.description}</description> <image> <url>{$aChannel.image}</url> <title>{$aChannel.title}</title> <link>{$aChannel.link}</link> </image> {foreach from=$aItems item=oItem} <item> <title>{$oItem.title|escape:'html'}</title> <link>{$oItem.link}</link> <pubDate>{date_format date=$oItem.pubDate format="r"}</pubDate> <category>{$oItem.category}</category> <yandex:full-text>{$oItem.yandexFullText}</yandex:full-text> {if $oItem.preview} <enclosure url="{$oItem.preview}"/> {/if} </item> {/foreach} </channel> </rss>

эти строчки нужно добавить в /config/config.local.php

/**  * Настройка rss для Яндекса  */  $config['router']['page']['yandex_rss'] = 'ActionYandexRss';  $config['yandex_rss']['description'] ='Очень клёвый новостной сайт';  $config['yandex_rss']['image']='http://путь.к/yandex-logo.png';  $config['yandex_rss']['print_preview']=true; //печатать preview или нет  $config['yandex_rss']['allow_tag']='foobar'; //тег, по которому отбираются топики с главной страницы, регистр важен.  

а это костыль в /classes/blocks/BlockTags.class.php

<?php  /*-------------------------------------------------------  *  * LiveStreet Engine Social Networking  * Copyright © 2008 Mzhelskiy Maxim  *  *--------------------------------------------------------  *  * Official site: www.livestreet.ru  * Contact e-mail: rus.engine@gmail.com  *  * GNU General Public License, version 2:  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html  *  ---------------------------------------------------------  */    /**   * Обрабатывает блок облака тегов   *   */  class BlockTags extends Block {  	  	public function Exec() {			    		/**  		 * Получаем список тегов  		 */  		$aTags=$this->oEngine->Topic_GetOpenTopicTags(70);  		  		/* фильруем тег для яндекс-новостей */  		function FilterYandexTag($oTag)  		{  			$sAllowTag=Config::Get('yandex_rss.allow_tag');   			return $oTag->getText() != $sAllowTag;  		}		  		$aTags=array_filter($aTags, "FilterYandexTag");  		  		/**  		 * Расчитываем логарифмическое облако тегов  		 */  		if ($aTags) {  			$iMinSize=1; // минимальный размер шрифта  			$iMaxSize=10; // максимальный размер шрифта  			$iSizeRange=$iMaxSize-$iMinSize;  			  			$iMin=10000;  			$iMax=0;  			foreach ($aTags as $oTag) {  				if ($iMax<$oTag->getCount()) {  					$iMax=$oTag->getCount();  				}  				if ($iMin>$oTag->getCount()) {  					$iMin=$oTag->getCount();  				}  			}			  			  			$iMinCount=log($iMin+1);  			$iMaxCount=log($iMax+1);  			$iCountRange=$iMaxCount-$iMinCount;  			if ($iCountRange==0) {  				$iCountRange=1;  			}  			foreach ($aTags as $oTag) {  				$iTagSize=$iMinSize+(log($oTag->getCount()+1)-$iMinCount)*($iSizeRange/$iCountRange);  				$oTag->setSize(round($iTagSize)); // результирующий размер шрифта для тега  			}  			/**  		 	* Устанавливаем шаблон вывода  		 	*/  			$this->Viewer_Assign("aTags",$aTags);  		}  	}  }  ?>

livestreet.ru

Я, как и миллионы сограждан, узнаю новости из топ-5 ленты Яндекс-Новостей на главной поисковика. Одним прекрасным днем я задумался о том, как именно работает их алгоритм.

Яндекс новости rss

Подумав, что не все так страшно, решил попробовать сделать свой собственный агрегатор. Но я, признаюсь, довольно меркантильный и не стал бы тратить свое время просто ради развлечения. Отлично! Осталось придумать как можно на этом заработать: если научится предсказывать горячие темы и создать собственный новостной портал, то можно довольно быстро набрать трафик с поисковых запросов.

Цель максимум:

Научиться предсказывать темы новостей из топ-5 яндекс-ленты.

Цель минимум:

Научится просто грамотно выделять темы новостей.

Основные шаги такие:

  1. Сбор ссылок на все СМИ, которые участвуют в Яндекс-новостях
  2. Сбор ссылок на RSS-ленты этих ресурсов
  3. Настройка парсера RSS-лент и запись сырой информации о статьях в базу данных (сбор Raw Data)
  4. Составление алгоритма определения тем новостей за определенный период (задача кластеризации) и записи информации в БД (processed data)
  5. Разработка веб-интерфейса с топом всех новостей и различными параметрами


Сбор ссылок на СМИ

Сбор ссылок я осуществлял с помощью программы Content Downloader (http://sbfactory.ru/). Крайне рекомендую! Программа платная, но не дорогая (от 1000 до 2000 рублей в зависимости от кол-ва потоков) Научиться пользоваться не сложно – есть много обучающих материалов и автор активно выходит на связь. Я пользуюсь не самой новой версией, просто потому что привык к старому интерфейсу.

Алгоритм сбора ссылок выглядел следующим образом:

а) сбор ссылок на страницы сайта http://news.yandex.ru/ методом массового обхода всего сайта (есть такая функция в Content Downloader). Весь сайт само собой обойти не удастся да и не нужно. Я собрал несколько тысяч страниц, чего вполне хватило.

б) сбор ссылок на новости СМИ со страниц, собранных выше. Чтобы указать программе, что именно нужно парсить, нужно просмотреть html-код искомого элемента. Нужная ссылка выглядит как-то вот так:

<a class=”b-link” …здесь всякий мусор… href=”http://russian.rt.com/article/68852″ target=”_blank”>Россия в 2015 году укрепит войска в Крыму, Калининграде и Арктике</a>

Яндекс новости rss

Указываем программе  границы парсинга:

начало:

<a class=”b-link”{skip}”href=”

конец:

” target=”_blank”>

({skip} – макрос позволяющий включить в границу все, что угодно до тех  пор пока не встретится последовательность символов, которая стоит после него)

Указываем “не включать границы” в парсинг (нам ведь нужна только ссылка а не html код)

Указываем что это повторяющиеся границы (то есть, мы говорим программе, что если найдется много таких границ, собирать нужно последовательно все, что найдется)

Запускаем парсинг. В результате получаем огромный список ссылок на новости.

Но новости сами по себе нам не интересны, нам нужны ссылки на ресурсы.

в) Получение списка СМИ. Воспользуемся старым добрым Excel. Выгружаем список в таблицу. Удаляем все вхождения “http://”  и “www.” через ctrl+h. Далее пользуемся функцией “разделить по столбцам”. Разделителем будет слеш “/”. Удаляем все, кроме первого столбца. Мы почти у цели – осталось удалить дубли (новости то разные, но ресурсы могут быть одинаковыми). Выделяем столбец, жмем “удалить дубли” – готово!

У меня получилось более 2000 самых разных ресурсов.

 

Сбор ссылок на RSS-ленты этих ресурсов

Для меня этот этап оказался самым унылым. Но начнем с начала. Прежде чем собирать список RSS желательно отсортировать список СМИ по популярности. Ведь для теста сойдет и сотня источников, но лучше сразу отобрать самые рейтинговые из них. Выход очень простой – собрать ТИЦ (тематический индекс цитирования Яндекса) для всего списка.

По запросу “массовое определение ТИЦ” на первом же месте видим http://www.raskruty.ru/tools/cy/

То что надо! Делаем три подхода (больше 1000 url за раз нельзя) – копируем результат в новую табличку Excel, сортируем по убыванию значения ТИЦ. Есть!

А теперь, собственно, вопрос знатокам. Как, зная ссылку на ресурс, получить ссылку на его rss-ленту?

Казалось бы, что может быть проще? Ан, нет. Нет никакой закономерности в формате ссылок на rss у ресурсов. Более того страницы rss-лент не индексируются. Поэтому что-то вроде “inurl: site.ru rss” в поисковиках почти никогда не работает.

Оказалось, существует специальный поисковик RSS – http://ctrlq.org/rss/

Однако верную ссылку на RSS при указании запроса в виде site:thenextweb.com  показывает слишком редко.

Потом я вспомнил, что существует Яндекс Лента – она же rss-читалка от Яндекса. Проверив несколько топовых сайтов, я был в полном восторге – вбиваешь ссылку на сайт, получаешь ссылку на rss. Но покопавшись внимательней, обнаружил такие досаднейшие недочеты:

  1. Ссылки на rss часто устаревшие. При клике по такой ссылке, как правило, попадаешь на 404 страницу. А новости, которые показываются Яндексом с такого ресурса, могут датироваться даже 2006 годом.
  2. Для Яндекса сайт c www и без – два разных ресурса.
  3. Бывает не находит ссылку вовсе.

Смирившись с тяжкой судьбой, решил все же автоматизировать процесс поиска rss через яндекс-подписки. Ничего не получилось: проблема авторизации, https соединение и подгрузка rss-ссылки “на лету”. Признаюсь, пробовал даже автокликер, но все впустую.

Пришлось собирать ручками. Если не находил через Яндекс – искал вручную на сайте. В итоге собрал с приятелем около 500 ссылок. Потом решу, как добить остальное.

 

Настройка парсера RSS-лент и запись информации о статьях в базу данных

Я использовал php + mysql для решения задачи.

  1. “Верхний” цикл – обход rss-лент всех имеющихся ресурсов
  2. “Нижний” цикл – обход всех новостей с конкретного ресурса и выявление “свежих”.

Здесь стоит задача определения “свежести” новости. В базе данных заводится таблица “rssurls”, которая состоит из двух полей: rssurl и lastdate.

Для каждого ресурса в базе нужно при каждом обходе записывать дату последней замеченной на ресурсе статьи. Так при следующем обходе скрипт сравнивает дату конкретной статьи из RSS ленты с датой из базы и если время статьи “новее” – записывает статью в базу и обновляет дату последней публикации.

Для статей заводится отдельная таблица “articles”, куда в отдельные поля сохраняется следующая информация: id записи, rssurl, title, date, link, category, record (время записи в базу) и tags(об этом поле – в следующей части).

Title, date, link, category – парсятся из rss. RSS, кто не знает, представляет и себя обыкновенный XML-файл, а значит с ними наверняка легко работать встроенными функциями php. Так и оказалось – есть замечательная функция simplexml_load_file, которая позволяет легко получать необходимые элементы. Но у этой функции есть недостаток – она не предназначена для работы с внешними источниками. По хорошему нужно работать через cURL, но для начала и так сойдет. Около четверти ресурсов отказывались подгружаться через  simplexml_load_file, хотя ссылка в браузере открывалась.

Не смотря на то, что RSS довольно “строг”, формат данных очень часто отличался. Особенно все плохо с датами: кто указывает timezone, а кто нет, кто указывает дни недели, а кто нет  и т.д. Пришлось долго повозиться с регулярными выражениями, чтобы привести все нормальный вид.

 

Составление алгоритма определения тем новостей

Самый интересный и творческий этап. Наверняка можно было бы применить модные и сложные статистические алгоритмы кластеризации. Но мне хотелось попробовать провести анализ “вручную” и в целом – получилось неплохо.

Я решил, что “темы” нужно вычленять из заголовков исходя из частоты упоминаний слов в них. Это довольно очевидно, но считать частоту слов в необработанном виде совершенно бессмысленно. Нужно как-то приводить к начальной форме все слова из конкретных заголовков.

Покопавшись в интернете я наткнулся на потрясающую библиотеку phpmorphy – http://phpmorphy.sourceforge.net/dokuwiki/

Библиотека среди прочего позволяет получать из любого слова на русском языке его базовую форму (по-научному процесс называется “лемматизация”). Это как раз то, что нам нужно!

Используя библиотеку, я написал функцию, которой на вход подается заголовок новости, а на выходе отдается строка из “нормированных” слов. Пример:

“Родители пропавших в Мексике студентов ворвались в казармы в Игуале” превращается в

“СТУДЕНТ РОДИТЕЛЬ ПРОПАСТЬ МЕКСИКА КАЗАРМА ВОРВАТЬСЯ ИГУАЛ”

(все вспомогательные знаки, кроме тире, игнорируются)

Дополняем функцию записи новости в таблицу articles, добавляя в поле tags строку с “нормированным” заголовком.

При первом же подсчете частот слов и их сортировке стало очевидно, что выбран верный путь. Стало ясно, что нужно добавить список стоп-слов, которые сами по себе не могут формировать новостную “тему”, но их частота упоминаний велика:

“НА”, “ЗА”, “ПО”, “ГОД”, “НЕ”, “БЫТЬ”, “ДО”, “ИЗ”, “ИЗА”, “ДЛЯ”, “ИЗ-ЗА”, “СТАТЬ”, “ЧТО”, “БОЛЕЕ”, “МОЧЬ”, “ПРИ”, и ряд других. Удаляем стоп-слова из нормированных заголовков.

Казалось бы после этого – все должно быть хорошо. Но часто попадаются “нормальные” слова, которые нельзя включить в стоп-лист, но которые точно не формируют “тему”.  Это объясняется тем, что одно и тоже слово встречается в заголовках, посвященных разным темам. Особенно часто это касается географических названий.

Встает вопрос как определять “ненастоящие” слова и убирать их из выборки? Интуиция подсказывает, что следует обратить внимание на следующие по популярности слова из заголовков, которые содержат проверяемое слово.

Пример распределения частот для “ненастоящих” слов “новый” и “СМИ”: 

  • 645 – НОВЫЙRplot
  • 44 – РОССИЯ
  • 29 – СТАРЫЙ
  • 28 – УКРАИНА
  • 24 – ДОНБАСС
  • 23 – НОМЕР

 

  • 387 – СМИЯндекс новости rss
  • 54 – РОССИЯ
  • 43 – РОССИЙСКИЙ
  • 35 – СИЛА
  • 29 – ВОЗДУШНО-КОСМИЧЕСКИЙ
  • 26 – РОСКОМНАДЗОР

 

А теперь “настоящие” слова “Нефть” и “Обстрел” 

  •  359 – НЕФТЬRplot02
  • 152 – ЦЕНА
  • 87 – БАРРЕЛЬ
  • 63 – НИЖЕ
  • 57 – ДОЛЛАР
  • 52 – УПАСТЬ

 

  • 279 – ОБСТРЕЛRplot03
  • 145 – АВТОБУС
  • 79 – ВОЛНОВАХА
  • 50 – ЧЕЛОВЕК
  • 46 – ОБСТРЕЛЯТЬ
  • 43 – ДОНБАСС

 

По форме “хвоста” можно определить “настоящесть” найденной темы.  О формулах – чуть ниже.

Еще была проблема дублирования одних и тех же “тем”. Я решил, что это из-за повторного учета слов. Будем считать, что новость не может быть посвящена разным темам одновременно. Если мы отнесли заголовок к определенной “настоящей” теме, то мы должны удалить ее из выборки, используемой для нахождения последующих тем.

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

Вернемся к “настоящести”. Я не стал особо изощряться с формулами. Считал среднее геометрическое для значений частот пяти слов из “хвоста” и делил на частоту исходного слова. Эмпирическим путем пришел к коэффициенту 0,17. Если коэффициент “настоящести” равен или выше этого значения, считаем тему “настоящей”.

При нахождении каждой отдельной “настоящей” новости в новую таблицу top записывается “измерение”: название темы, три ключевых слова, частота основного слова, дата начала периода измерения, дата конца периода измерения,  html-код трех ссылок на примеры статей по теме.

  1. Веб-интерфейс с топом всех новостей

Я настроил cron так, чтобы обход всех rss-лент и сбор новостей происходил раз в десять минут.

Сами “измерения” происходят за 6-часовой период раз в 6 часов (пока что). Позже, когда соберем больше ссылок на rss, сделаю периоды меньше а сами измерения чаще. (оптимальные параметры еще предстоит выяснить. Сам Яндекс обновляется раз в 20 минут)

В самом веб-интерфейсе вывожу данные за последний период, где “частоты” сравниваются со значением из предыдущего измерения:

6SXJiDY

 

Задача минимум выполнена. Надеюсь, работа была проделана не зря )

learndata.ru

*Плагин можно подключить в разделе консоли «Плагины»

Yandex.News Feed by Teplitsa — плагин позволяет организовать трансляцию материалов сайта для сервиса Яндекс.Новости.

Плагин формирует RSS-ленту сайта, которая транслируется в Яндекс.Новости. Плагин автоматически выбирает для трансляции материалы за последние восемь дней (в соответствии с правилами индексации Яндекса).

Обязательно ознакомьтесь с требованиями Яндекса — http://help.yandex.ru/news/info-for-mass-media.xml

Для подключения трансляции материалов сайта в Яндекс.Новости необходимо отправить заявку на почту info@news.yandex.ru со ссылкой на RSS-ленту.

Администрация Яндекса оставляет за собой право отклонить оставленную заявку.

Настройки плагина находятся в разделе консоли «Настройки» — «Яндекс.Новости».

news-yandex02

news-yandex05

Примечание: если в настройках постоянных ссылок сайта выбран вариант «По умолчанию» (http://site.cerkov.ru/?p=123), то лента для Яндекс.Новостей не заработает.

URL трансляции — адрес, по которому будет доступна RSS-лента. По умолчанию ее адрес site.ru/yandex/news. При необходимости этот адрес можно поменять. Этот адрес нужно будет выслать Яндексу с заявкой на добавление ленты в Яндекс.Новости.

Типы записей для трансляции — в этом поле можно указать какие типы контента попадают в трансляцию. По умолчанию плагин выбирает только записи с типом post.

page — выводит в ленту только страницы.

post,page — выводит в ленту и страницы, и записи.

Ссылка на логотип для описания сайта на сервисе Яндекс.Новости — в это поле нужно вставить полную ссылку на изображение, оно будет использоваться в качестве логотипа на странице трансляции. Размер изображения не должен превышать 100px по наибольшей стороне, допустимые форматы файла изображения — .jpg, .png, .gif.

Ссылка на квадратный логотип — в это поле нужно вставить полную ссылку на изображение, оно будет использоваться в качестве логотипа рядом с новостями. Минимальный размер изображения 180х180рх, изображение должно быть строго квадратное. Допустимые форматы файла изображения — .jpg, .png, .gif.

Таксономия для фильтрации трансляции — тут можно задать фильтры для вывода записей, к примеру, выводить записи только из заданных рубрик или с определенными метками. Выберите в списке по какому параметру нужно выводить записи.

Термины для фильтрации трансляции — в этом поле нужно указать id таксономии, которая была задана в поле «Таксономия для фильтрации трансляции». Можно указать один или несколько id (через запятую).

Как найти id рубрик и меток — зайдите в раздел консоли «Записи» — «Рубрики» или «Метки», зайдите в редактирование нужной рубрики/метки, для этого нажмите на название рубрики/метки. В адресной стоке браузера будет путь, id рубрики/метки идет после «ID=».

news-yandex04

Примечание: если в поле «Типы записей для трансляции» вы указали вывод страниц и записей,  а в поле «Термины для фильтрации трансляции» указали id рубрики или метки, то в ленту будут выводиться только записи из указанной рубрики или метки.

support.prihod.ru

Тэги <rss>, <channel>, <title>, <link>, <description>, <language> и <item>

Пример использования:

<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss"> <channel> <title>Пастернак</title> <link>http://example.com/</link> <description> Проект о фруктах и овощах. Мы рассказываем о том, как выращивать, готовить и правильно есть. </description> <language>ru</language> <item> ... </item> </channel>

Описание тегов:

  1. <rss> — используемый формат данных. Экспорт данных для размещения материалов в Дзене осуществляется в XML-based формате RSS 2.0. Мы поддерживаем RSS, HTML5 и микроформаты, Media RSS, GeoRSS.
  2. <channel> — информация об источнике и его содержании. Содержит внутри тэги:
    • <title> — название издания.
    • <link> — адрес сайта издания.
    • <description> — описание издания.
    • <language> — язык статьи в стандарте ISO 639-1.
    • <item> — внутри этого тега содержится материал издателя. Таких материалов в RSS-ленте для Дзена должно быть не менее 50.
Тэги <title>, <link>, <pubDate>, <author>, <category>, <description> и <content:encoded>

Пример: использования:

<title>Андроид восстановит ферму в Японии</title> <link>http://example.com/2023/07/04/android-happy-farmer</link> <guid>2fd4e1c67a2d28fced849ee1bb76e7391b93eb12</guid> <pubDate>Tue, 4 Jul 2023 04:20:00 +0300</pubDate> <author>Петр Стругацкий</author> <category>Технологии</category> <description><![CDATA[ Заброшенную землю рядом с токийским университетом Нисёгакуся передали андроиду с внешностью известного японского хозяйственника. ]]></description> <content:encoded><![CDATA[ <p> Здесь находится полный текст статьи. </p> ]]></content:encoded> 

Описание тегов:

  1. <title> — заголовок статьи.
  2. <link> — заголовок статьи. URL сайта, данные которого транслируются в потоке. Ссылка в RSS должна быть идентичной ссылке на сайте. Это условие поможет нашему рекомендатору.

    Например, эти URL считаются идентичными:

    • http://example.com/2023/07/04/android-happy-farmer
    • http://example.com/2023/07/04/android-happy-farmer

    А эти нет:

    • http://example.com/2023/07/04/android-happy-farmer
    • http://example.com/2023/07/04/android-happy-farmer/
    • http://example.com/2023/07/04/android-happy-farmer?utm_medium=cpc&utm_source=yandex. {source_type}&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}
  3. <pubDate> — дата публикации в формате RFC822, то есть «Wed, 02 Oct 2002 15:00:00 +0300». Если этого тега нет, то Дзен будет считать дату по моменту загрузки RSS, а это не всегда верно.
  4. <author> — автор статьи.
  5. <category> — тематика сообщения. Разметка сообщений позволит Дзену рекомендовать их заинтересованным читателям. Статья может относиться сразу к нескольким тематикам.
  6. <description> — краткая аннотация статьи.
  7. <content:encoded> — полный текст статьи. Мы принимаем статьи не короче 300 знаков.
Тэг <media:rating>

Мы просим использовать этот тег для разметки «взрослого» контента, чтобы в случае нарушения правил сервиса Дзена пессимизировался не весь сайт, а только откровенные материалы. Обязательно отмечайте «взрослый» контент, в противном случае все материалы вашего сайта будут пессимизироваться.

Так должна выглядеть разметка контента, который можно показывать подросткам от 13 лет:

<media:rating scheme="urn:simple">nonadult</media:rating>

Так должна выглядеть разметка «взрослого» контента:

<media:rating scheme="urn:simple">adult</media:rating>
Тэги <figure>, <img>, <video> и <figcaption>

Мы просим прислать ссылки на все иллюстрации и видео, которые есть в статье. Статья должна содержать как минимум одну картинку шириной не менее 400 пикселей.

Пример использования:

<figure> <img src="http://example.com/2023/07/04/pic1.jpg" width="1200" height="900"> <figcaption> Первый андроид-фермер смотрит на свои угодья <span class="copyright">Михаил Родченков</span> </figcaption> </figure>

Описание тегов:

  1. <figure> — иллюстрация или видео. Каждая иллюстрация или видеоролик размечаются отдельным тегом <figure>.
  2. <figcaption> — подпись под иллюстрацией или видео.
  3. <img> — иллюстрация в формате JPEG, GIF, PNG, размером не меньше 600 пикселей в ширину. Первая иллюстрация в статье, размеченная этим тегом, используется для превью в ленте Дзена.
  4. <video> — видео поддерживаемых форматов (MP4 (H.264), YouTube, Vimeo).
Тэги <media:content>, <media:description>, <media:copyright>

Вы можете использовать альтернативный способ вставки медиа-контента в RSS с этими тегами.

Пример использования:

<item> <media:content type="image/jpeg" medium="image" width="900" height="600" url="http://example.com/2023/07/04/pic1.jpg"> <media:description type="plain">Первый андроид-фермер смотрит на свои угодья</media:description> <media:copyright>Михаил Родченков</media:copyright> </media:content> </item>

Описание тегов:

  1. <media:content> — иллюстрации, аудио- или видеоролики поддерживаемых форматов:
    • Изображения в формате JPEG, GIF, PNG.
    • Видеоролики в формате MP4 (H.264), YouTube, Vimeo.
    • Аудиоролики в формате MP3, SoundCloud.
  2. <media:description> — подпись под иллюстрацией или видео.
  3. <media:copyright> — авторские права на иллюстрации или видео.
Тэг <enclosure>

Это обязательный элемент для иллюстраций, аудио- и видеофайлов.

Если в сообщении содержится несколько иллюстраций или иллюстрация и видеофайл, элемент <enclosure> должен быть повторен. Если в статье есть несколько вариантов одной иллюстрации, отличающихся размером, то в <enclosure> нужно указать URL изображения наибольшего размера. Тег <enclosure> дублирует тэг <figure>, но оба тега обязательны. Второй находится в теле статьи, первый — вне тела в описании.

Пример использования:

<enclosure url="http://example.com/2023/07/04/pic1.jpg" type="image/jpeg"/> <enclosure url="http://example.com/2023/07/04/pic2.jpg" type="image/jpeg"/> <enclosure url="http://example.com/2023/07/04/video/42420" type="video/x-ms-asf"/>
Тэги <pdalink> и <amplink>

Пример использования:

<pdalink>http://m.example.com/2023/07/04/android-happy-farmer</pdalink> <amplink>http://amp.example.com/2023/07/04/android-happy-farmer</amplink>

Описание тегов:

  1. <pdalink> — ссылка на адаптированную для мобильных устройств версию сообщения.
  2. <amplink> — ссылка на AMP-версию сообщения.
Встроенный код

Мы просим вырезать весь HTML, который не описан в настоящих рекомендациях к RSS, например:

  • Видео
    <iframe src="URL Vimeo или YouTube" height="480" width="640"/>
  • Инстаграм, твиттер и фейсбук
    <iframe src="//instagram.com/p/INSTID/" ...> </iframe> <blockquote class=“twitter-tweet” ...> <p>Status text</p> <a href=“https://t.co/...”>media reference</a> </blockquote> <script async src=“//platform.twitter.com/widgets.js” charset=“utf-8”></script> <div class=“fb-post” data-href=“facebook_url_to_the_post”> ... </div> <div class=“fb-video” data-href=“facebook_url_to_video”> ... </div>

yandex.ua

Установка и настройка RSS for Yandex Zen

Имеет ли смысл добавлять ваш сайт в Дзен? Будет ли с него идти трафик? Будет ли он большим? Это все на ваше усмотрение. Лично я придерживаюсь такого мнения, что лишним не будет. Ничего не теряя можно получить дополнительный приток посетителей. Пусть он не будет большим или стабильным, но он будет, и от меня при этом не потребуется каких-то лишних телодвижений и вложений (кроме одноразовой настройки ленты).

Итак, традиционно плагин RSS for Yandex Zen можно будет либо скачать из официального репозитория (по приведенной ссылке), а потом установить перенеся содержимое архива на блог по ФТП. Либо можно сразу из админки Вордпресса поискать его по названию на вкладке из левого меню «Плагины» — «Добавить новый». Подробнее смотрите в заметке про установку плагинов в Вордпресс.

Яндекс новости rss

Дальше все по накатанной — устанавливаете и активируете. Потом заходите в настройки плагина выбрав из левого меню «Настройки» — «Яндекс Дзен»:

Яндекс новости rss

По стандартам ленты для Дзена в ней должно быть не менее 50 записей (я сделал 150 — пусть будет). Так же следует указать тематику, к которой можно отнести материалы вашего сайта и определиться с принадлежностью материалов к контенту для взрослых.

По умолчанию плагин будет собирать в ленту только посты — если нужно добавить еще и страницы, то воспользуйтесь подсказкой в строке «Типы записей». Все остальные поля заполняйте по усмотрению — в случае чего переделаете.

При создании новых постов или редактировании старых
под окном для ввода текста вы найдете блок под названием «Яндекс Дзен», где сможете внести изменения в настройки плагина относительно только этой публикации. Если конкретнее, то можно будет поменять тематику, поменять отношение записи к взрослому контенту и, наконец, можно будет вообще убрать эту запись из ленты формируемой для Дзена. Очень удобно, на мой взгляд.

Яндекс новости rss

ktonanovenkogo.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.