さまざまなパターンの日本語文章をデータとして欲しいケースがあったので、指定したURLから本文らしき内容を抽出するスクリプトを書いた。

require 'playwright'
require 'readability'
require 'html2text'
 
# 指定したURLから本文らしき内容を抽出して返却する
def html2text(url)
  Playwright.create(playwright_cli_executable_path: 'npx playwright') do |playwright|
    playwright.chromium.launch(headless: true) do |browser|
      begin
        page = browser.new_page
        page.goto(url, waitUntil: 'load') 
        doc = Readability::Document.new(page.content)
        sleep 1
        return {:title => page.title, :content => Html2Text.convert(doc.content) }
	  rescue
        return {:title => nil, :content => nil }
      end
    end
  end
end
 
url = ARGV.shift
doc = html2text(url)
puts "#{doc[:title]}\n#{doc[:content]}"

Javascriptでコンテンツを生成するページに対応するためPlaywrightを使用。

使用したライブラリ