python初心者でもたった1時間でスクレイピングができるようになるまで(mac用)

Pythonのスクレイピングができるライブラリは、Requestsライブラリと、Beautifl Soupライブラリがあります。
今回はより初心者向けのBeautifl Soupライブラリを使います。

# 事前準備

## python3とpip3のインストール

python3が入っていない人は、pythonを入れておきましょう。
このコマンドでpip3も同時にインストールされます。

```zsh
$ brew install python3
```

無事にインストールできたか確認します。


```zsh

$ python3 --version
Python 3.6.5

$ pip3 --version
pip 10.0.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
```

これでオーケー！！


## webページを取得するためにRequestsをインストールする

先ほどのpipを使って、Requestsをインストールします。

```zsh

$ pip3 install requests
```

### ちょっとだけRequestsの使い方を勉強しました

* ファイルの先頭でインポートする必要がある

```
import requests
```

基本的な使い方はこちらを参照ください。↓↓

[Requests の使い方 (Python Library)](https://qiita.com/sqrtxx/items/49beaa3795925e7de666)
多分、全部書くと恐ろしく見にくい記事になってしまう。


## Beautiful Soupをインストールする

```zsh

$ pip3 install beautifulsoup4
```


## pythonの開発環境を整える

XAMPPでpythonを使おうと思ったんですけど、うまくいかず。

anacondaで開発環境を整えたいと思います！

開発環境がある方は飛ばしてください。

* anacondaインストール

[anaconda公式サイト](https://www.anaconda.com/download/)

ココからインストールできます。
先ほどpython3をインストールしたので、python3.Xの方をインストールしてください。

これはwindows向けですが、macも似たようにやるとできたので、これをもとにインストールを進めると良いと思います
[科学計算向けPython環境を簡単にインストールできる「Anaconda」入門](https://knowledge.sakura.ad.jp/17235/)


anacondaをインストールしたら、launchpadから「anaconda navigator」っていうのがあると思うので、それを押してください。

![スクリーンショット 2018-09-01 11.35.38.png](https://qiita-image-store.s3.amazonaws.com/0/238739/aa8af3d5-6a90-5f29-7c71-dfc4fea6922c.png)

そして、jupyter notebookのところの「launch」をクリックします。すると、jupyter notebookが開きます。

![スクリーンショット 2018-09-01 11.34.30.png](https://qiita-image-store.s3.amazonaws.com/0/238739/56fe60ba-d1c8-659b-6b75-223e95b53085.png)

newから、python3を選べば、オーケー


![スクリーンショット 2018-09-01 11.40.25.png](https://qiita-image-store.s3.amazonaws.com/0/238739/e294288c-e8b9-5a7b-5c2b-e94f5016deb8.png)

#　実践してみる

## Qiitaにアクセスして、適当にデータをとってみる

```python

import requests
r = requests.get('https://qiita.com/') # Qiitaのデータをとる
r.content # データの中身を表示
```

結果はこれ

![スクリーンショット 2018-09-01 11.45.51.png](https://qiita-image-store.s3.amazonaws.com/0/238739/e5f75ec5-0597-cc37-637d-e537c530faa9.png)

すごいことになってるwww
なるほどね、なるほどね

## Qiitaにアクセスしてhtmlのデータを取得してみる

```python

import requests
from bs4 import BeautifulSoup

r = requests.get('https://qiita.com/') 
data = BeautifulSoup(r.text, 'html.parser')
data
```

![スクリーンショット 2018-09-01 11.50.10.png](https://qiita-image-store.s3.amazonaws.com/0/238739/84c0b61c-432b-d8cf-c966-f248ba14b53f.png)

なるほどなるほど、


## NewsPicksのホーム画面にあるニュースのタイトルを取得する

早速ですがコードはこちら

```python

import requests
from bs4 import BeautifulSoup

r = requests.get('https://newspicks.com/') 
data = BeautifulSoup(r.text, 'html.parser')
elems = data.find_all("div", class_="title _ellipsis")
for e in elems:
 print(e.getText())

```

実行結果はこちら
![スクリーンショット 2018-09-01 12.47.04.png](https://qiita-image-store.s3.amazonaws.com/0/238739/0d4e0f37-6b9f-7246-3bd8-0311a6ba6bf4.png)


おーすげええ


# html要素を特定する時に使える小技

これやったらめっちゃわかりやすくコードを書けました

手順
1. pythonのコードと同じところに「data.html」を作る　←名前はなんでもいいですが
2. 下記のコードを自分でアレンジして貼る(with以降がデータを上書きするコードです)

```python
import requests
from bs4 import BeautifulSoup

r = requests.get('https://newspicks.com/') 
data = BeautifulSoup(r.text, 'html.parser') # 書き込みたいデータ
with open('data.html', mode='w', encoding = 'utf-8') as fw:
   fw.write(data.prettify()) # data.htmlに書き込みモードで「data」を整形して上書きします！

```

そうしたら、長いの一部だけ見せますが、こんな感じになりました

```data.html
!DOCTYPE html>
<html class="anonymous">
 <head>
  <meta charset="utf-8"/>
  <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
  <meta content="width=device-width,user-scalable=no" name="viewport"/>
  <meta content="origin" name="referrer"/>
  <meta content="PF0KOWBojqnTWtUDrPqsejuE9xPUPqVEJWMdoodG5Aw" name="google-site-verification"/>
  <title>
   NewsPicks | 経済を、もっとおもしろく。
  </title>
  <link href="https://newspicks.com/favicon.ico" rel="shortcut icon"/>
  <meta content="newspicks,dow jones,news,economics,politics" name="keywords"/>
  <link href="https://newspicks.com/" rel="canonical"/>
  <link href="https://newspicks.com/np_logo.png" rel="apple-touch-icon"/>
  <link href="" rel="alternate"/>
  <meta content="「経済を、もっとおもしろく。」ビジネスパーソンや就活生必携のソーシャル経済メディア。国内外の最先端の経済ニュースを厳選。専門家や著名人の解説コメントでニュースがわかる。" name="description"/>
  <meta content="NewsPicks | 経済を、もっとおもしろく。" property="og:title"/>
  <meta content="website" property="og:type"/>
  <meta content="https://newspicks.com/" property="og:url"/>
  <meta content="NewsPicks" property="og:site_name"/>
  <meta content="「経済を、もっとおもしろく。」ビジネスパーソンや就活生必携のソーシャル経済メディア。国内外の最先端の経済ニュースを厳選。専門家や著名人の解説コメントでニュースがわかる。" property="og:description"/>
  <meta content="https://newspicks.com/ogp.png" property="og:image"/>
  <meta content="ja_JP" property="og:locale"/>
  <meta content="summary" name="twitter:card"/>
  <meta content="@NewsPicks" name="twitter:site"/>
  <meta content="@NewsPicks" name="twitter:creator"/>
  <meta content="NewsPicks | 経済を、もっとおもしろく。" name="twitter:title"/>
  <meta content="「経済を、もっとおもしろく。」ビジネスパーソンや就活生必携のソーシャル経済メディア。国内外の最先端の経済ニュースを厳選。専門家や著名人の解説コメントでニュースがわかる。" name="twitter:description"/>
  <meta content="https://newspicks.com/ogp.png" name="twitter:image"/>
  <meta content="JP" name="twitter:app:country"/>
<!-- まだまだ下に続きますが、省略します -->
```


すげええええ
簡単にできたーーー

# 参考ウェブサイト
[初心者向けにPythonでWebスクレイピングをする方法をまとめる](https://www.sejuku.net/blog/51241#Python)

[Requests の使い方 (Python Library)](https://qiita.com/sqrtxx/items/49beaa3795925e7de666)

[anaconda公式サイト](https://www.anaconda.com/download/)

[科学計算向けPython環境を簡単にインストールできる「Anaconda」入門](https://knowledge.sakura.ad.jp/17235/)