今回は簡単なWebスクレイピングをPythonで試してみます。
目的
Webスクレイピングを試してみたいと思い簡単なシステムを作ってみました。内容は、YahooファイナンスからUSD/yenの為替レートデータを読み込んでcsvファイルに記録する(Webスクレイピング)スクリプトをcronで毎分動かし、そのcsvファイルからチャートを毎時で描画する(可視化)というものです。この前者と後者を、2つの記事に分けて書きます。今回はその1つ目で、スクレイピングをやっていきます。
実行環境
スクレイピングにはBeautifulSoup4を使用していきます。
- CentOS 7
- Python 3.6.5
- BeautifulSoup 4
- JupyterLab
- ユーザー: test
- 作業ディレクトリ: /home/test/
USD為替レートのスクレイピング
タグとクラスの確認
Webページから文字列や数値をスクレイピングするためには、それが入っているタグとクラスを調べなくてはいけません。 まずはYahoo!ファイナンスのドル円の為替ページを見てみます。
ドル円のページを表示しています。この値の入っているタグとクラスが分かればデータを抜き取ることができます。ではこの部分を選択して"右クリック==>検証"としていきます。
するとchromeの開発者ツール画面に切り替わり、右側の窓でドル円値が<td>タグの"stoksPrice"クラスに入っていることがわかります。これを使ってスクレイピングするpythonコードを書きます。
スクリプト
以下のusd_scraping_cron.pyとして、Webページからドル円値をスクレイピングするスクリプトを作成しました。
スクレイピングの処理をしている部分は29~41行目のmain()関数です。それより前ではスクレイピングするurlの指定や、データを記録するcsvファイルの指定、作成などです。
先ほどchromeの開発者ツールを使って調べた、ドル円値の入っているタグとクラスを指定して、データ取得時の時刻とともに、指定したcsvファイルに書き込んでいます。
crontabファイル
上のコードは実行した時刻と、その時のスクレイピングデータをcsvファイルに追加していくスクリプトなので、crondを使って毎分このスクリプトを実行するようにさせます。
cronの使い方についても別の記事で書いています。cronの使い方とパスの注意点
5行目のファイルがスクレイピング用のファイルで、8行目は次の記事で説明します。
terminal上でcronを有効化
1 2 |
# crontab < usd_cron.tab |
データの確認
ではデータを記録したcsvファイルを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 |
# head usd.csv year,month,day,hour,minute,usd, 2018,06,10,00,18,109.530000, 2018,06,10,00,19,109.530000, 2018,06,10,00,20,109.530000, 2018,06,10,00,21,109.530000, 2018,06,10,00,22,109.530000, 2018,06,10,00,23,109.530000, 2018,06,10,00,24,109.530000, 2018,06,10,00,25,109.530000, 2018,06,10,00,26,109.530000, |
時間も要素ごとに記録されています。
まとめ
今回は簡単なWebスクレイピングをして、それをcsvファイルに記録していきました。
このファイルからデータをプロットするまでを次の記事で書いています。
コメント