【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.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의 방법 설명
  • at_xpath 지정된 xpath와 일치하는 첫 번째 요소를 반환합니다. (요소를 Node라고 함)
  • xpath 지정된 xpath와 일치하는 모든 요소를 ​​반환합니다. (요소를 NodeSet이라고합니다)

  • 실행해 보자.



    만든 파일을 실행해 봅니다.
    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에 통지해 보거나 여러가지 할 수 있다고 생각합니다.
    자신용으로 정리 사이트를 만들어 보는 것도 재미있을지도 모르겠네요.

    좋은 웹페이지 즐겨찾기