「C言語入門」の PDF化

C言語入門
このページを Rubyスクレイピングして PDF化する。
 

require 'mechanize'

def tx_save(page, fname)
  n = page.index("<title>")
  page.insert(n, '<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">')
  open(fname,"w+") {|io| io.write(page)}
end

Dir.chdir('/home/***/man')    #作業用フォルダ
url = 'http://wisdom.sakura.ne.jp/programming/c/'

agent = Mechanize.new
agent.user_agent_alias = 'Linux Firefox'
tx_save(agent.get(url).body, "001.html")

agent.get(url).css('a')[1..65].each_with_index do |node, i|
  sleep(1)
  u = URI(url).merge(node.attribute('href').value).to_s
  tx_save(agent.get(u).body, "%03d" % (i + 2) + ".html")
end

66.times do |i|
  st = "%03d" % (i + 1)
  `wkhtmltopdf #{st + ".html"} #{st + ".pdf"}`
end
`pdftk *.pdf cat output c.pdf`

「wkhtmltopdf」と「pdftk」が必要。Linux Mint 18 で確認済み。