

Rubyのopen-
uriというライブラリを使って「Google検索で、"Ruby"と検索して出てきた10件のリンク」を取得して表示する簡単なスクレイピングに挑戦しています。  
取得したHTML文の表示がおかしいので何が悪いのかを知りたいです。  
目標としては以下の画像の様にリンクのHTML文が出るようにしたいです。  
[![](https://i.stack.imgur.com/F58c6.jpg)](https://i.stack.imgur.com/F58c6.jpg)

##  環境

AWS cloud9  
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

さぁ作ろうと思い、以下のようなコードを書いてみました。

[code]

    require 'open-uri'
    
    #URLからHTMLを取得
    url = 'https://www.google.co.jp/search?q=ruby'
    user_agent = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
    charset = nil
    html = open(url, "User-Agent" => user_agent) do |f|
      charset = f.charset
      f.read
    end
    #取得したHTMLを出力
    puts html
    
[/code]

ですが、ターミナルに出力されたHTML文が全く改行されてない上、CSSやJavaScriptのコードらしきものも紛れていて非常に見辛いです。それに、探しても10件のリンクだと分かるような要素が見つかりません

[code]

    <a href="~~">オブジェクト指向スクリプト言語　Ruby</a>
    
[/code]

みたいな文です。

出力結果が出たターミナル  
[![terminal](https://i.stack.imgur.com/ZQt2J.jpg)](https://i.stack.imgur.com/ZQt2J.jpg)

ターミナルの上の方にもまだまだ文字がありますが、や

などHTMLらしいタグはなくfunctionなどJavaScriptのコードなのかよくわからないものが未改行で続いています。

## 試したこと

ターミナルだけだと取得した文字列を全て表示できないのかな？と思い、取得したHTML文をRubyのFileクラスを用いてテキストファイルにして全て目を通してみました。

[code]

    File.open("test.html", "w") do |str|
      str.puts(html)
    end
    
[/code]

を追加。  
全て目を通しましたが、日本語すら出てこず、相変わらず未改行で、CSSやJavaScript文がゴチャ混ぜになっています。  
テキストファイル内の画像  
[![テキストファイル](https://i.stack.imgur.com/NmKrX.jpg)](https://i.stack.imgur.com/NmKrX.jpg)

そこで、試しにこのHTML文をブラウザで表示させてみた所、日本語版のGoogleではなく何故か英語版のGoogleになっていました。  
[![画像の説明をここに入力](https://i.stack.imgur.com/DfQFk.jpg)](https://i.stack.imgur.com/DfQFk.jpg)

とはいえ、

[code]

    url = 'https://www.google.co.jp/search?q=ruby'
    
[/code]

のコードのURL部分に"google.co.jp"が含まれているはずなので日本語が表示されないとおかしいはずなのです。  
もしかして僕のGoogleアカウントの言語設定が英語になってたりするのかなと思い見てみましたがしっかり"日本語"を使用するようになってました。

もう何がなんだかわかりません...。はじめての質問ですが、Stackoverflow公式の「良い質問をするには？」を参考に書いたつもりです。ですが、分かりにくい文章だと思います。申し訳ありません。


CC BY-SA 4.0
2018-08-15T15:21:44.457
47545
2018-08-15T15:21:44.457
2020-06-17T08:14:45.997
-1
29740
question
ruby
Rubyのopen-uriライブラリを使ってあるサイトのHTMLを取得したが表示がおかしくなる問題