[Nokogiri] Lassen Sie uns RSS-Nachrichten mit Ruby bearbeiten!

Hallo! Dieses Mal werde ich RSS-Nachrichten mit Nokogiri analysieren und zusammenfassen, wie man mit Ruby damit umgeht.

In dieser Zusammenfassung werden wir ein Juwel namens Nokogiri verwenden, um RSS-Nachrichten in Ruby zu verarbeiten. Wenn Sie mit Ruby RSS-Nachrichten verarbeiten können, können Sie Ihre eigenen Kurationsmedien erstellen, und es wird interessant, also machen wir es.

Was diesmal zu machen

Ich werde automatisch den Titelteil der Nachrichten aus dem RSS abrufen, der die folgenden Spielinformationen verteilt, und sie in das Array einfügen. https://automaton-media.com/feed/

Vorerst werde ich eine einfache machen und sie zusammenstellen. (Wenn Sie Lust dazu haben, schreiben wir einen großen Artikel wie "Kurationsmedien mit Schienen erstellen!")

Eine kurze Beschreibung der XML-Daten

Bevor wir uns mit RSS-Nachrichtendaten befassen, werfen wir einen kurzen Blick auf XML.

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

XML-Deklaration

Der Teil, der am Anfang als `<? Xml version =" 1.0 "~` geschrieben wurde, gibt an, dass diese Datei eine XML-Datei ist und am Anfang beschrieben werden muss.

Definition des Kanals

Der Block nach der XML-Deklaration, der mit `` <Kanal> `beginnt, definiert den Kanalnamen für dieses RSS.

Bilddefinition

Das Kanallogo usw. sind eingestellt.

Installieren Sie Nokogiri

Lassen Sie uns zuerst Nokogiri installieren.

gem install nokogiri

Fügen Sie zur Verwendung mit Rails Ihrem Gemfile Nokogiri hinzu.

gem 'nokogiri'

Nachdem Sie es der Gemfile hinzugefügt haben, bündeln Sie die Installation.

bundle install

Programmerstellung

Nachdem Nokogiri installiert ist, erstellen wir ein Programm.

Erfordert die Verwendung der Bibliothek

Erstellen Sie zunächst eine Datei mit dem Namen nokogiri.rb und fügen Sie am Anfang die folgenden zwei Zeilen hinzu.

nokogiri.rb


require 'open-uri' #Ich möchte die open-Methode verwenden, mit der die URL-Daten abgerufen werden können, indem die URL als Argument übergeben wird. Laden Sie sie daher.
require 'nokogiri' #Die von der open-Methode abgerufenen Daten werden zur Verarbeitung durch nokogiri gelesen.

Lesen Sie Nachrichtenartikel mit der offenen Methode

nokogiri.rb


require 'open-uri'
require 'nokogiri'

url = 'https://automaton-media.com/feed/' #Stellen Sie die Nachrichten ein, die dieses Mal gelesen werden sollen.

charset = nil #Setzen Sie die geladenen Nachrichten auf Null zurück, damit sie nicht verstümmelt werden.
titles = open(url) do |file| #Holen Sie sich die Daten mit der Methode open, übergeben Sie sie an den Block und bedienen Sie sie.
  charset = file.charset #Legen Sie den Zeichensatz der gelesenen Datei im Zeichensatz fest.
end

Durchsuchen Sie Nokogiri nach Nachrichten, die mit der offenen Methode abgerufen wurden

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) #Machen Sie die mit der open-Methode abgerufene Datei zu einem Objekt von Nokogiri.
  channel = doc.at_xpath('//channel') #Holen Sie sich den Kanalteil in die Datei.
  title = channel.xpath('//title') #Holen Sie sich alle Titel im Kanal.
  title.map { |title| title.text } #Sammeln Sie nur den Textteil aus dem NodeSet des Titels in einem Array.
end

puts titles #Lassen Sie uns den Titel ausgeben.

** Beschreibung der Nokogiri-Methode **

--at_xpath Gibt das erste Element zurück, das dem angegebenen xpath entspricht. (Das Element heißt Knoten) --xpath Gibt alle Elemente zurück, die dem angegebenen xpath entsprechen. (Das Element heißt NodeSet)

Lass uns rennen

Lassen Sie uns die erstellte Datei ausführen.

ruby nokogiri.rb

Könnten Sie die in einem Array angeordneten Nachrichtentitel wie unten gezeigt ausgeben?

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

Häufig verwendete Nokogiri-Suchmethode

Die Suchmethode von Nokogiri kann jedes Mal entsprechend den Anforderungen der Nachrichten, die Sie extrahieren möchten, gegoogelt werden. Die häufig verwendeten Methoden sind jedoch nachstehend zusammengefasst.

at

doc.at('//title') #Gibt den ersten Suchtreffer Node zurück.

at_xpath

doc.at_xpath('//title') #Suchen Sie nach xpath und geben Sie den ersten Treffer-Knoten zurück.

xpath

doc.xpath('//title') #Gibt ein NodeSet zurück, das eine Suche auf xpath durchführt.

at_css

doc.at_css('title') #Suchen Sie nach CSS und geben Sie den ersten Treffer-Knoten zurück.

css

doc.css('title') #Gibt ein NodeSet zurück, das eine Suche in CSS trifft.

Impressionen

Dieses Mal habe ich die RSS-News-Titel in einem Array mit Ruby gesammelt, aber wenn möglich, denke ich, dass ich sie in die Datenbank stellen, Slack und LINE benachrichtigen kann und so weiter. Es kann interessant sein, eine zusammenfassende Site für sich selbst zu erstellen.

Recommended Posts

[Nokogiri] Lassen Sie uns RSS-Nachrichten mit Ruby bearbeiten!
Schwer in Rubin! ??
Yahoo-Nachrichten mit [Ruby + Nokogiri] kratzen → CSV speichern
Umgang mit TSV-Dateien und CSV-Dateien in Ruby
Ausgabedreieck in Ruby
Arten von Variablen in Ruby
Schneller Popcount in Ruby