[Nokogiri] Gérons les actualités RSS avec Ruby!

salut! Cette fois, je vais analyser les actualités RSS avec Nokogiri et résumer comment les gérer avec Ruby.

Dans ce résumé, nous utiliserons un joyau appelé Nokogiri pour gérer les actualités RSS dans Ruby. Si vous pouvez gérer les actualités RSS avec Ruby, vous pouvez créer votre propre média de curation et ce sera intéressant, alors faisons-le.

Que faire cette fois

Je vais automatiquement récupérer la partie titre des nouvelles du RSS qui distribue les informations de jeu suivantes et les mettre dans le tableau. https://automaton-media.com/feed/

Pour le moment, je vais en faire un simple et le mettre ensemble. (Si vous en avez envie, écrivons un gros article comme "Créez un média de curation avec Rails!")

Une brève description des données XML

Avant de traiter les données d'actualité RSS, jetons un bref coup d'œil à XML.

ゲームRSSオリジナル説明用.png

Déclaration XML

La partie écrite comme <? Xml version = "1.0" ~ au début indique que ce fichier est un fichier XML, et il doit être décrit au début.

définition du canal

Le bloc suivant la déclaration XML qui commence par <channel> '' définit le nom du canal pour ce RSS.

définition d'image

Le logo de la chaîne, etc. est défini.

Installez Nokogiri

Tout d'abord, installons Nokogiri.

gem install nokogiri

Pour une utilisation avec Rails, ajoutez nokogiri à votre Gemfile.

gem 'nokogiri'

Après l'avoir ajouté au Gemfile, installez l'ensemble.

bundle install

Création de programme

Maintenant que Nokogiri est installé, créons en fait un programme.

Nécessite la bibliothèque à utiliser

Tout d'abord, créez un fichier appelé nokogiri.rb et ajoutez les deux lignes suivantes au début.

nokogiri.rb


require 'open-uri' #Je veux utiliser la méthode ouverte qui peut obtenir les données d'URL en passant l'URL en tant qu'argument, alors chargez-la.
require 'nokogiri' #Les données extraites par la méthode ouverte sont lues pour être traitées par nokogiri.

Lire des articles de presse avec la méthode ouverte

nokogiri.rb


require 'open-uri'
require 'nokogiri'

url = 'https://automaton-media.com/feed/' #Réglez les actualités à lire cette fois.

charset = nil #Réinitialisez les nouvelles chargées à zéro afin qu'elles ne soient pas brouillées.
titles = open(url) do |file| #Obtenez les données avec la méthode ouverte, transmettez-les au bloc et utilisez-le.
  charset = file.charset #Définissez le jeu de caractères du fichier lu dans charset.
end

Recherchez dans Nokogiri les actualités récupérées par la méthode ouverte

nokogiri.rb


require 'open-uri'
require 'nokogiri'

url = 'https://automaton-media.com/feed/'

charset = nil
titles = open(url) do |file|
  charset = file.charset
  doc = Nokogiri::XML(file) #Faites du fichier récupéré par la méthode open un objet de Nokogiri.
  channel = doc.at_xpath('//channel') #Récupérez la partie canal dans le fichier.
  title = channel.xpath('//title') #Obtenez tous les titres de la chaîne.
  title.map { |title| title.text } #Collectez uniquement la partie de texte du NodeSet du titre dans un tableau.
end

puts titles #Sortons le titre.

** Description de la méthode Nokogiri **

--at_xpath Renvoie le premier élément qui correspond au xpath spécifié. (L'élément s'appelle Node) --xpath Renvoie tous les éléments qui correspondent au xpath spécifié. (L'élément s'appelle NodeSet)

Courons

Exécutons le fichier créé.

ruby nokogiri.rb

Avez-vous obtenu les titres des actualités organisés dans un tableau comme indiqué ci-dessous?

スクリーンショット 2020-05-24 4.39.09.png

Méthode de recherche Nokogiri fréquemment utilisée

La méthode de recherche de Nokogiri peut être recherchée à chaque fois sur Google en fonction des exigences de l'actualité que vous souhaitez extraire, mais les méthodes fréquemment utilisées sont résumées ci-dessous.

at

doc.at('//title') #Renvoie le premier nœud de recherche.

at_xpath

doc.at_xpath('//title') #Recherchez par xpath et renvoyez le premier nœud atteint.

xpath

doc.xpath('//title') #Renvoie un NodeSet qui lance une recherche sur xpath.

at_css

doc.at_css('title') #Recherchez par css et renvoyez le premier nœud atteint.

css

doc.css('title') #Renvoie un NodeSet qui lance une recherche en css.

Impressions

Cette fois, j'ai rassemblé les titres des actualités RSS dans un tableau avec Ruby, mais si possible, je pense que je peux les mettre dans la base de données, notifier Slack et LINE, et ainsi de suite. Il peut être intéressant de créer un site de synthèse pour vous-même.

Recommended Posts

[Nokogiri] Gérons les actualités RSS avec Ruby!
Lourd en rubis! ??
Scraping Yahoo News avec [Ruby + Nokogiri] → Enregistrer CSV
Comment gérer les fichiers TSV et les fichiers CSV dans Ruby
Triangle de sortie en Ruby
Types de variables dans ruby
Popcount rapide en Ruby