Как создать свою собственную программу для чтения RSS с помощью R

автор vadim


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

На удивление легко создать собственную программу чтения RSS-каналов в R. Просто выполните следующие восемь шагов.

Создайте документ Quarto или файл сценария R

Вы можете использовать простой R-скрипт, но Quarto добавляет некоторые полезные готовые стили. Quarto также упрощает доступ к использованию JavaScript для окончательного отображения, если вы того пожелаете. Но код учебника прекрасно работает и в R-файле.

Однако, в отличие от сценария R, моему документу Quarto для запуска требуется заголовок YAML. Я добавлю несколько настроек в YAML, чтобы сгенерировать один файл HTML (embed-resources: true) и не отображать мой код (echo: false) или какие-либо сообщения кода или предупреждения:

---
title: "Sharon's RSS Feed"
format:
html
embed-resources: true
editor: source
execute:
echo: false
warning: false
message: false
---

Загрузить необходимые пакеты

Далее я добавлю код R внутрь блока кода R (```{r} и ``` заключить блок исполняемого кода в Quarto; они вам не нужны, если вы используете простой R-скрипт) и загрузите нужные мне пакеты. Как можно догадаться по названию, tidyRSS — это библиотека для чтения RSS-каналов в R.

``{r}
library(tidyRSS)
library(dplyr)
library(DT)
library(purrr)
library(stringr)
library(lubridate)
```

Добавить RSS-каналы

Выбор релевантных каналов — ключевая часть полезного опыта чтения RSS. Я нахожу свою на основе источников, которые мне нравятся, а затем проверяю веб-сайты или ищу, существуют ли RSS-каналы. (В качестве дополнительного упражнения вы можете использовать пакет rvest для чтения карт сайта и преобразования их в формат RSS, но это выходит за рамки этого руководства. Возможно, в следующей статье!)

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

Поскольку я пишу и для InfoWorld, и для Computerworld, я добавлю оба этих канала. Кроме того, я добавлю несколько RSS-каналов, специфичных для R, в том числе R-Bloggers, R Weekly и RSS-каналы Mastodon #rstats и #QuartoPub на fosstodon.org, экземпляре Mastodon, который я использую. В приведенном ниже коде я сохраняю информацию о канале в фрейме данных, вызывающем myfeeds, с URL-адресами каналов и желаемым заголовком для каждого канала. Затем я упорядочиваю их по названию канала:

```{r}
myfeeds <- data.frame(feed_title = c("All InfoWorld",
"All Computerworld",
"Mastodon rstats",
"Mastodon QuartoPub",
"R Bloggers",
"R Weekly"),
feed_url = c("https://www.infoworld.com/index.rss",
"https://www.computerworld.com/index.rss",
"http://fosstodon.org/tags/rstats.rss",
"http://fosstodon.org/tags/QuartoPub.rss",
"https://feeds.feedburner.com/Rbloggers",
"https://rweekly.org/atom.xml")
) |>
arrange(feed_title)
```

Примечание. С этого момента я не буду включать ```{r} ``` Код Quarto «ограждает» код R. Тем не менее, весь остальной код R все еще необходимо «огородить» в документе Quarto.

Related Posts

Оставить комментарий