【Nokogiri】 RSS 뉴스를 Ruby로 다루자!
이번에는 RSS 뉴스를 Nokogiri로 분석하고 Ruby로 다룰 때까지를 정리해 보겠습니다.
이 요약에서는 Nokogiri라는 gem을 사용하여 RSS 뉴스를 Ruby에서 처리 할 수 있도록합니다.
RSS 뉴스를 Ruby로 취급할 수 있다면, 자작 큐레이션 미디어를 만들거나 해도 재미있기 때문에 해 봅시다.
이번에 만드는 것
이하의 게임 정보를 전달하고 있는 RSS로부터, 자동으로 뉴스의 타이틀 부분을 취해 와서 배열에 넣어 보려고 생각합니다.
h tps:///아우토마톤-메아. 코 m/후에에 d/
우선 이번에는 간단한 것을 만들어 정리하기로 합니다.
(기분이 들으면, 큐레이션 미디어를 Rails로 만든다! 같은 대규모 기사를 쓸까)
XML 데이터의 간략한 설명
RSS 뉴스 데이터를 다루기 전에 XML에 대해 간략하게 설명합니다.
XML 선언
맨 앞의 <?xml version="1.0" 〜
라고 쓰여져 있는 부분은, 이 파일이 XML 파일인 것을 나타내, 반드시 선두에 기술하는 것이 되어 있습니다
채널 정의
XML 선언의 다음의 <channel>
로 시작되는 블록은, 이 RSS 의 채널명을 정의한 것입니다.
이미지 정의
채널 로고 등이 설정됩니다.
Nokogiri 설치
우선 Nokogiri를 설치해 봅시다.
gem install nokogiri
Rails에서 사용하는 경우 Gemfile에 nokogiri를 추가하십시오.
gem 'nokogiri'
Gemfile에 추가하면 bundle install합시다.
bundle install
프로그램 작성
Nokogiri가 설치된 곳에서 실제로 프로그램을 만들어 갑시다.
사용 라이브러리를 require
먼저 nokogiri.rb라는 파일을 만들고 앞에 다음 두 줄을 추가하십시오.
nokogiri.rbrequire 'open-uri' # 引数にURLを渡すとURLのデータを取得出来るopenメソッドを使いたいので読み込みます。
require 'nokogiri' # openメソッドで取って来たデータを、nokogiriで取り扱うため読み込みます。
open 메소드로 뉴스 기사 로드
nokogiri.rbrequire 'open-uri'
require 'nokogiri'
url = 'https://automaton-media.com/feed/' # 今回読み込むニュースを設定します。
charset = nil # 読み込んだニュースが文字化けしないよう一度nilにして再設定します。
titles = open(url) do |file| # openメソッドでデータを取得し、ブロックに渡して操作します。
charset = file.charset # charsetに読み込んだファイルのcharsetを設定します。
end
open 메소드로 가져온 뉴스를 Nokogiri에서 검색합시다.
nokogiri.rbrequire 'open-uri'
require 'nokogiri'
url = 'https://automaton-media.com/feed/'
charset = nil
titles = open(url) do |file|
charset = file.charset
doc = Nokogiri::XML(file) # openメソッドで取って来たファイルをNokogiriのオブジェクトにします。
channel = doc.at_xpath('//channel') # ファイル内のchannel部分を取得します。
title = channel.xpath('//title') # channel内にあるtitleを全て取得します。
title.map { |title| title.text } # titleのNodeSetからテキスト部分だけ配列に集めます。
end
puts titles # タイトルを出力してみましょう。
Nokogiri의 방법 설명
RSS 뉴스 데이터를 다루기 전에 XML에 대해 간략하게 설명합니다.
XML 선언
맨 앞의
<?xml version="1.0" 〜
라고 쓰여져 있는 부분은, 이 파일이 XML 파일인 것을 나타내, 반드시 선두에 기술하는 것이 되어 있습니다채널 정의
XML 선언의 다음의
<channel>
로 시작되는 블록은, 이 RSS 의 채널명을 정의한 것입니다.이미지 정의
채널 로고 등이 설정됩니다.
Nokogiri 설치
우선 Nokogiri를 설치해 봅시다.
gem install nokogiri
Rails에서 사용하는 경우 Gemfile에 nokogiri를 추가하십시오.
gem 'nokogiri'
Gemfile에 추가하면 bundle install합시다.
bundle install
프로그램 작성
Nokogiri가 설치된 곳에서 실제로 프로그램을 만들어 갑시다.
사용 라이브러리를 require
먼저 nokogiri.rb라는 파일을 만들고 앞에 다음 두 줄을 추가하십시오.
nokogiri.rbrequire 'open-uri' # 引数にURLを渡すとURLのデータを取得出来るopenメソッドを使いたいので読み込みます。
require 'nokogiri' # openメソッドで取って来たデータを、nokogiriで取り扱うため読み込みます。
open 메소드로 뉴스 기사 로드
nokogiri.rbrequire 'open-uri'
require 'nokogiri'
url = 'https://automaton-media.com/feed/' # 今回読み込むニュースを設定します。
charset = nil # 読み込んだニュースが文字化けしないよう一度nilにして再設定します。
titles = open(url) do |file| # openメソッドでデータを取得し、ブロックに渡して操作します。
charset = file.charset # charsetに読み込んだファイルのcharsetを設定します。
end
open 메소드로 가져온 뉴스를 Nokogiri에서 검색합시다.
nokogiri.rbrequire 'open-uri'
require 'nokogiri'
url = 'https://automaton-media.com/feed/'
charset = nil
titles = open(url) do |file|
charset = file.charset
doc = Nokogiri::XML(file) # openメソッドで取って来たファイルをNokogiriのオブジェクトにします。
channel = doc.at_xpath('//channel') # ファイル内のchannel部分を取得します。
title = channel.xpath('//title') # channel内にあるtitleを全て取得します。
title.map { |title| title.text } # titleのNodeSetからテキスト部分だけ配列に集めます。
end
puts titles # タイトルを出力してみましょう。
Nokogiri의 방법 설명
gem install nokogiri
gem 'nokogiri'
bundle install
Nokogiri가 설치된 곳에서 실제로 프로그램을 만들어 갑시다.
사용 라이브러리를 require
먼저 nokogiri.rb라는 파일을 만들고 앞에 다음 두 줄을 추가하십시오.
nokogiri.rb
require 'open-uri' # 引数にURLを渡すとURLのデータを取得出来るopenメソッドを使いたいので読み込みます。
require 'nokogiri' # openメソッドで取って来たデータを、nokogiriで取り扱うため読み込みます。
open 메소드로 뉴스 기사 로드
nokogiri.rb
require 'open-uri'
require 'nokogiri'
url = 'https://automaton-media.com/feed/' # 今回読み込むニュースを設定します。
charset = nil # 読み込んだニュースが文字化けしないよう一度nilにして再設定します。
titles = open(url) do |file| # openメソッドでデータを取得し、ブロックに渡して操作します。
charset = file.charset # charsetに読み込んだファイルのcharsetを設定します。
end
open 메소드로 가져온 뉴스를 Nokogiri에서 검색합시다.
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) # openメソッドで取って来たファイルをNokogiriのオブジェクトにします。
channel = doc.at_xpath('//channel') # ファイル内のchannel部分を取得します。
title = channel.xpath('//title') # channel内にあるtitleを全て取得します。
title.map { |title| title.text } # titleのNodeSetからテキスト部分だけ配列に集めます。
end
puts titles # タイトルを出力してみましょう。
Nokogiri의 방법 설명
실행해 보자.
만든 파일을 실행해 봅니다.
ruby nokogiri.rb
아래와 같이 배열에 정리한 뉴스 타이틀을 출력할 수 있었습니까?
자주 사용하는 노코기리 검색 방법
Nokogiri의 검색 메소드는, 빼내고 싶은 뉴스의 요건에 맞추어 그 때마다 메소드를 구그하면 됩니다만, 자주(잘) 사용하는 메소드를 이하에 정리할 것입니다.
아 t
doc.at('//title') # 最初に検索ヒットしたNodeを返します。
at_xpath
doc.at_xpath('//title') # xpathで検索して最初にヒットしたNodeを返します。
xpath
doc.xpath('//title') # xpathでの検索にヒットするNodeSetを返します。
at_css
doc.at_css('title') # cssで検索して最初にヒットしたNodeを返します。
css
doc.css('title') # cssでの検索にヒットするNodeSetを返します。
감상
이번, RSS 뉴스의 타이틀을 Ruby로 배열에 모았습니다만, 여기까지 할 수 있으면 후에는 DB에 넣어 보거나, Slack이나 LINE에 통지해 보거나 여러가지 할 수 있다고 생각합니다.
자신용으로 정리 사이트를 만들어 보는 것도 재미있을지도 모르겠네요.
Reference
이 문제에 관하여(【Nokogiri】 RSS 뉴스를 Ruby로 다루자!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fujigaki/items/f15f2a52d5ff91c84c09텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)