スクレイピングを始めて、詰まった

スクレイピングを初めて速攻つまった

検索して出てきたサンプルプログラムをコピーしたところ

```
-bash: require: コマンドが見つかりません
-bash: require: コマンドが見つかりません
-bash: url: コマンドが見つかりません
-bash: charset: コマンドが見つかりません
-bash: app/jobs/nokogiri.rb: line 8: 期待してない token `(' のあたりにシンタックスエラー
-bash: app/jobs/nokogiri.rb: line 8: `html = open(url) do |f|'
```

なるほど

試したサンプルはこれ

```nokogiri.rb
require 'nokogiri'
require 'open-uri'

url = 'https://qiita.com/search?q=ruby'

charset = nil

html = open(url) do |f|
    charset = f.charset
    f.read
end

doc = Nokogiri::HTML.parse(html, nil, charset)
doc.xpath('//h1[@class="searchResult_itemTitle"]').each do |node|
  p node.css('a').inner_text
end
```
Q：これはコンソール上で実行できない…？
→いいえ、　ruby nokogiri.rb　としてないからです。
こうしたら動きました。

なぜ試さなかったのか
試さずにこんな記事で恥を晒したのか今となっては不明です。


```scrape.rake
namespace :scrape do
  require 'open-uri'
  require 'nokogiri'

  # スクレイピング先のURL
  url = 'http://matome.naver.jp/tech'

  charset = nil
  html = open(url) do |f|
    charset = f.charset # 文字種別を取得
    f.read # htmlを読み込んで変数htmlに渡す
  end

  # htmlをパース(解析)してオブジェクトを作成
  doc = Nokogiri::HTML.parse(html, nil, charset)

  doc.xpath('//li[@class="mdTopMTMList01Item"]').each do |node|
    # tilte
    p node.css('h3').inner_text

    # 記事のサムネイル画像
    p node.css('img').attribute('src').value

    # 記事のサムネイル画像
    p node.css('a').attribute('href').value
  end

end
```
もうひとつrakeファイルなら、というのを目にしたので
これをコンソールで実行してみたところ

```
/home/vagrant/blog/vendor/bandle/gems/rake-12.3.1/lib/rake/file_utils.rb:10: warning: already initialized constant FileUtils::RUBY
/home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/file_utils.rb:10: warning: previous definition of RUBY was here
/home/vagrant/blog/vendor/bandle/gems/rake-12.3.1/lib/rake/file_utils.rb:109: warning: already initialized constant FileUtils::LN_SUPPORTED
/home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/file_utils.rb:109: warning: previous definition of LN_SUPPORTED was here
/home/vagrant/blog/vendor/bandle/gems/rake-12.3.1/lib/rake/file_utils_ext.rb:17: warning: already initialized constant Rake::FileUtilsExt::DEFAULT
/home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rake-12.3.1/lib/rake/file_utils_ext.rb:17: warning: previous definition of DEFAULT was here
WARNING: Possible conflict with Rake extension: String#ext already exists
WARNING: Possible conflict with Rake extension: String#pathmap already exists
/home/vagrant/blog/vendor/bandle/gems/rake-12.3.1/lib/rake/file_list.rb:44: warning: already initialized constant Rake::FileList::ARRAY_METHODS

中略

/home/vagrant/blog/vendor/bandle/gems/railties-5.1.6/lib/rails/engine.rb:648:in `each'
/home/vagrant/blog/vendor/bandle/gems/railties-5.1.6/lib/rails/engine.rb:648:in `run_tasks_blocks'
/home/vagrant/blog/vendor/bandle/gems/railties-5.1.6/lib/rails/application.rb:440:in `run_tasks_blocks'
/home/vagrant/blog/vendor/bandle/gems/railties-5.1.6/lib/rails/engine.rb:457:in `load_tasks'
/home/vagrant/blog/Rakefile:6:in `<top (required)>'
(See full trace by running task with --trace)
```

なるほどさっぱりわからん。
rakeのほうがこんなになってしまうのはまた全然別の何かがありそう。


Q：なにか用意できていないものがあるのか
Q：書き方、書く場所、置く場所、実行の仕方　何を間違っているのか

こうなりますよ〜　とあったものが何一つ出てないので
多分うまくいっていないのはわかった。

サンプルのサンプル的な動きすらも見ることができていないとは
僕の明日はどっちだ。

サンプルのサンプルな動きは確認できたので
僕のあしたはこっちでした。

引き続きいろいろサンプルを弄ってみたい。

コメントありがとうございました。