nokogiri によるスクレイピング処理が途中で止まった時

色々なパターンの原因があると思うけど、今回は文字コードが原因だった。

charset = nil

html = open(url, "r:CP932") do |f|
  charset = f.charset
  f.read
end

doc = Nokogiri::HTML.parse(html, nil, charset)

↑の場合だと、取得するページにあわせて "r:CP932" を指定するような感じ。