Rails スクレイピング 忘備録

まずRubyでできるか確認。

それからRailsに組み込む 必要なライブラリ

require 'open-uri'
require 'nokogiri'

今回はタイ語のサイトから記事を取得

ข่าวหน้า 1 หนังสือพิมพ์ไทยรัฐ - หนังสือพิมพ์ ไทยรัฐฉบับวันนี้ อ่านข่าวหน้า 1 หนังสือพิมพ์ไทยรัฐ - thairath.co.th

# スクレイピング先のURL
url = 'https://www.thairath.co.th/newspaper'

charset = nil
html = open(url) do |f|
  charset = f.charset # 文字種別を取得
  f.read # htmlを読み込んで変数htmlに渡す
end

# htmlをパース(解析)してオブジェクトを作成
doc = Nokogiri::HTML.parse(html, nil, charset)

なぜこれでパースできるのかと言うと

作成途中です

doc.xpath('//li[@class="mdTopMTMList01Item"]').each do |node|
  # tilte
  p node.css('h3').inner_text

  # 記事のサムネイル画像
  p node.css('img').attribute('src').value

  # 記事のサムネイル画像
  p node.css('a').attribute('href').value
end

参考サイト

Nokogiriを使ったRubyスクレイピング [初心者向けチュートリアル] | 酒と涙とRubyとRailsと