「C# によるプログラミング入門」の pdf化

C# によるプログラミング入門 | ++C++; // 未確認飛行 C
このサイトを Rubyスクレイピングして pdf化します。

Rubyコード。

require 'mechanize'
require 'uri'

Dir.chdir('pdf')
agent = Mechanize.new
agent.user_agent_alias = 'Linux Firefox'
url = 'http://ufcpp.net/study/csharp/'
counter = 1
agent.get(url).css('ul.category-list a').each do |node|
  next if (u = node.attribute('href').value) == "#"
  u = URI(url).merge(u).to_s
  title = ("%03d" % counter) + '.pdf'
  `wkhtmltopdf #{u} #{title}`
  puts u
  counter += 1
  sleep(2)
end
`pdftk *.pdf cat output csharp.pdf`

「wkhtmltopdf」と「pdftk」が必要です。apt-get で入ると思います。

「一週間で身につくC#言語の基本」もついでに

ここも pdf化。
一週間で身につくC#言語の基本|トップページ~C#言語の初心者でも、簡単にプログラミングが気軽に学習できるサイトです。

require 'mechanize'
require 'uri'

Dir.chdir('pdf')
agent = Mechanize.new
agent.user_agent_alias = 'Linux Firefox'
url = 'http://csharp.sevendays-study.com/'
counter = 1
ar = ["http://sevendays-study.com/computer-literacy/",
  "http://c-lang.sevendays-study.com/",
  "http://cpp-lang.sevendays-study.com/",
  "http://java.sevendays-study.com/",
  "http://sevendays-study.com/algorithm/",
  "appendix2.html",
  "link.html"]
agent.get(url).css('div#main th a').each do |node|
  u = node.attribute('href').value
  next if ar.include?(u)
  u = URI(url).merge(u).to_s
  title = ("%03d" % counter) + '.pdf'
  `wkhtmltopdf #{u} #{title}`
  puts u
  counter += 1
  sleep(2)
end
`pdftk *.pdf cat output csharp1.pdf`