さまざまなパターンの日本語文章をデータとして欲しいケースがあったので、指定した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を使用。