1日10行コーディング 〜スクレイピング環境構築編〜

# 概要

これから毎日10行ほどのソースコードを投稿したいと思います。

## 1日目
### 【テーマ】
スクレイピング

### 言語
* ruby

### 目標成果物
初日ということで張り切りすぎず、一番親しみのあるスクレイピングをするコードを書いていこうと思います。
パッと思いついたところで、今季のおすすめアニメが知りたいなって思ったので
https://www.anikore.jp/
こちらのサイトから今季の上位アニメを取得したいと思います。
(調べればいいじゃんとか、言わないでください...)

### コードと資料
1.まずあにこれの今季一覧ページに飛びます。
2.http通信を見たところAPIとかではなくHTMLが普通に落ちてきていそうなので、そちらの通信をcurlでコピーします。
![](https://i.imgur.com/jBSxqME.png)
3.神サイト[curl-to-ruby](https://jhawthorn.github.io/curl-to-ruby/)を用いてさっきのcurlをrubyのコードに変換します。
4.その結果がこちら(ファイル名crawler.rb)

```crawler.rb
require 'net/http'
require 'uri'

uri = URI.parse("https://www.anikore.jp/chronicle/2020/spring/ac:tv/")
request = Net::HTTP::Get.new(uri)
request["Authority"] = "www.anikore.jp"
request["Cache-Control"] = "max-age=0"
request["Upgrade-Insecure-Requests"] = "1"
request["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36"
request["Sec-Fetch-Dest"] = "document"
request["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
request["Sec-Fetch-Site"] = "same-origin"
request["Sec-Fetch-Mode"] = "navigate"
request["Sec-Fetch-User"] = "?1"
request["Referer"] = "https://www.anikore.jp/"
request["Accept-Language"] = "ja,en-US;q=0.9,en;q=0.8,zh-TW;q=0.7,zh;q=0.6"
request["Cookie"] = "anikore=vr4e4jp9u83qpe76nb5jf2dm35; optimizelyEndUserId=oeu1591020303990r0.9278880352532264; optimizelySegments=%7B%225639900384%22%3A%22gc%22%2C%225644680362%22%3A%22direct%22%2C%225653460252%22%3A%22false%22%7D; optimizelyBuckets=%7B%7D; _ga=GA1.2.1594135381.1591020306; __gads=ID=8dec67eec678ab98:T=1591020306:S=ALNI_Mam9k84TCb2IJVyBUucjbUoYYIgsQ; _gid=GA1.2.1570502140.1591280281; _gali=page-top; _gat=1"

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end
```
この時点で10行を軽く超えていた...

5.このHTMLファイルをRubyのnokogiriでパースしたいので「Gemfile」というものを用意して下記の記述をします。

```
source 'https://rubygems.org'

gem 'nokogiri'
```
この状態で、ターミナルを起動して

```
bundle install --path .bundle
```
を実行します。

6.まさかのエラー
久しぶりにNogiriを入れようとしたら普通に怒られた...
世の中なんでも思い通りにいくわけではないんですね。

```
Fetching gem metadata from https://rubygems.org/.................
Resolving dependencies...
Using bundler 1.17.2
Fetching mini_portile2 2.4.0
Installing mini_portile2 2.4.0
Fetching nokogiri 1.10.9
Installing nokogiri 1.10.9 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/itayayuichiro/Documents/src/crawler/qiita_crawler/.bundle/ruby/2.6.0/gems/nokogiri-1.10.9/ext/nokogiri
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r
./siteconf20200604-4813-yjwd2f.rb extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/include/ruby.h

You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.

extconf failed, exit code 1

Gem files will remain installed in /Users/itayayuichiro/Documents/src/crawler/qiita_crawler/.bundle/ruby/2.6.0/gems/nokogiri-1.10.9 for inspection.
Results logged to /Users/itayayuichiro/Documents/src/crawler/qiita_crawler/.bundle/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/nokogiri-1.10.9/gem_make.out

An error occurred while installing nokogiri (1.10.9), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.10.9' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  nokogiri
```
とりあえず[このサイト](https://qiita.com/___inon_/items/59315b465251bf2e4db3)
を参考に下記の4コマンドを実行してみます。

```
$ brew tap homebrew/dupes
$ brew install libxml2 libxslt libiconv 
$ brew link --force libxml2                    ##--force--オプションを付けてインストール
$ brew link --force libxslt                      ##--force--オプションを付けてインストール
```
と思ったが、1行目を実行したところでエラーになった...

```
Updating Homebrew...
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
```
がその後の処理が終わったのでとりあえず無視して進めてみる。
→次のコマンド打ったらダメだったっぽいので

```
xcode-select --install
```
こちらを実行

インストールに時間かかりそうなので明日に続きます....笑