MENU
このブログのテーマはこちら ⇒ SWELL公式HP

初心者がPythonでスクレイピングのプログラムを作ってみた

  • URLをコピーしました!
Pythonの勉強をしたいけど、
何から勉強したらいいかわからない。

という人はスクレイピングからやったらいいと思うよ。

この記事を読むと分かること

スクレイピングって何?

便利な使い道

Pythonでスクレイピングする方法

 

目次

Python初心者の勉強にちょうどいいスクレイピング

実際に僕はPythonの最初の勉強で、スクレイピングのプログラムを作りました。

スクレイピングとは?

ネットに転がっている情報をプログラムが自動で調べてくれる。

普通に検索じゃダメなの?

普通に調べると面倒くさいことをプログラムにやらせます。

いくつか例を挙げておきます。

例えば・・・
  • 複数のお天気サイトのデータの平均を表示
  • 自分が保有している株価を全部自動で集める
  • 気になる商品の値段を各通販サイト全て調べる

などなど、使い方は無限大です。

しかも、ネットで情報を検索するなんて誰でもやってることだから、誰でも役に立ちます。

さらに、このプログラムを毎日決まった時間に自動で起動するようにしておけば、あなたは集まった情報を見るだけです。

まさに、自動化の見本ですね!

PCの電源の自動化の方法は別の記事に書いてます↓

あわせて読みたい
Pythonファイルをバッチファイルとタスクマネージャで自動で実行する方法 自分が持っている株(米国ETF)の価格を円換算して自動でLINEに送ってくれるpythonプログラムを作成しました。 https://himasugi.com/beginner-tried-to-create-a-scrap...

 

Pythonのスクレイピングプログラム

今流行りのプログラミング言語Pythonを使ってスクレイピングプログラムを作っていきたいと思います。

初心者向けに分かりやすく書いていますが、多少は専門用語も出てきます。
意味が分からない人は『「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典』で調べるといいかも!

モジュールをインストール

Pythonでスクレイピングをするには、いくつかモジュールが必要です。

特にこの2つは必須。

requests:HTMLのデータをくれ!というモジュール

beautifulsoup4:HTMLデータを解析するモジュール

requestsでとってきたデータをbeautifulsoup4で解析するという流れ。

まずはこの2つのモジュールをインストールしましょう。

この2つはPyPIで配布されているため、簡単にインストールできます。

インストールはコマンドプロンプトでこのコードを入力するだけ。

pip install requests
pip install beautifulsoup4

これで、2つのモジュールのインストールが完了です!

 

今回のプログラムの全貌

最初に完成したプログラムを見てみましょう。

import requests
from bs4 import BeautifulSoup

TARGET_URL_VTI = "https://www.bloomberg.co.jp/quote/VTI:US"

html_VTI = requests.get(TARGET_URL_VTI)
soup = BeautifulSoup(html_VTI.content, "html.parser")

VTIprice = soup.find('div', class_='price')
print(VTIprice.text+"$")

TARGET_URL_yen = "https://nikkei225jp.com/fx/"

html_Yen = requests.get(TARGET_URL_yen)
soup = BeautifulSoup(html_Yen.content, "html.parser")

dollar = soup.find_all('div', class_='if_cur')
print(dollar[2].text+"円")

print("VTI価格(円換算)"+(str(float(VTIprice.text)*float(dollar[2].text))+'円'))
何が何やらさっぱり分からん

わざとコメントを消しているので分かりにくいはずです。

今回紹介するスクレイピングプログラムは、「米国株(ETF)VTIの株価を円換算して表示させる」というものです。

スクレイピングの初歩の初歩のプログラムなので、初心者にはちょうどいい難易度のはずです。

ちなみに僕はこのプログラムにさらに改造を加えて、多数の株の円換算価格を毎朝LINEに送ってくるようにしています

楽ちん

LINEに送ったりする方法は別の記事に書いているので参考にしてみてください!

★★★★★
Pythonを実行した結果をLINEに送る方法
★★★★★

1つずつ見ていきましょう!

モジュールをimport

まずは、requests、Beautifulsoup4のモジュールをimport(使うことを宣言)します。

#requests、BeautifulSoupを使う宣言
import requests
from bs4 import BeautifulSoup

bs4:beautiflSoup4モジュール
from bs4 import BeautifulSoup:
beautiflSoup4の中のBeautifulSoupというクラス(機能)をインポート

「from bs4 import BeautifulSoup」この部分は同じ名前だから分かりにくいだけで、他の例で考えると理解しやすいです。

「from 車 import エンジン」だと、「車の中のエンジンという部品を使うよ」という意味です。

 

慣れるまでよく忘れるんですが、Pythonではモジュールはインストールするだけでは不十分で、プログラムごとにimport(使う宣言)しないと使えません。

これで2つのモジュールを使う準備ができました。

データを取得するURLに名前を付ける

次に、HTMLデータを取得するURLに名前を付けます。要するに変数を使います。

#情報を取得するURL
TARGET_URL_VTI = "https://www.bloomberg.co.jp/quote/VTI:US"

VTIの株価が載っているURLをTARGET_URL_VTIと名前を付けています。

「https://www.bloomberg.co.jp/quote/VTI:US」←これだと分かりにくいですからね!

わざわざ変数にしてURLに名前を付けなくても、プログラムは動いてくれます。

けど、今後プログラムを見返した時に、

これなんだっけ…?

こんなことにならないために名前を付けています。

requestsでHTML取得→BeautifulSoupへ渡す

requestsモジュールでTARGET_URL_VTIのHTMLデータを取得して、BeautifulSoupモジュールにデータを渡しています。

#requestsモジュールでTARGET_URL_VTIのHTMLを取得
html_VTI = requests.get(TARGET_URL_VTI)
#取得したHTMLを解析するシステムに渡す(BeautifulSoupの機能の1つ)
soup = BeautifulSoup(html_VTI.content, "html.parser")

ちなみに、requestsとBeautifulSoupを使ったスクレイピングでは必須のコードなので確実に覚えましょう!

html_AAA = requests.get(URL)
soup = BeautifulSoup(html_AAA.content, “html.parser”)

 

欲しいデータだけ抽出

欲しいデータ、今回の場合はVTIの価格($)を変数soupから抽出します。
※soup = BeautifulSoup(html_VTI.content, “html.parser”)

#変数priceにdiv class=priceを指定
VTIprice = soup.find('div', class_='price')

soup.find():データを抽出する
(‘div’, class_=’price’):classがprice

スクレイピングをする上でHTMLを理解できるかどうかが問題になってきます。

今回のサイトを見てみると、ここに欲しい情報が載っています。

この情報とって!

と言っても、PCは理解してくれません。

???

PCに理解してもらうためには、HTMLで指定してあげるしかありません。

この部分のHTMLをGoogleデベロッパーツールで確認しましょう。

この部分は<div class=price></div>で囲まれていることが分かります。

つまり、パソコンには

<div class=price>VTI価格</div>を抜き出して!

と伝えないといけません。

すると、

VTI価格

と抜き出してくれます。

この指示をPythonのBeautifulSoupのでは

soup.find(‘div’, class_=’price’)

こういう書き方になるわけです。

Googleデベロッパーツールの使い方は別の記事に書いているので参考にしてください。

スクレイピングだけでなく、今後のネットビジネスに必ず生きてきます!

★★★★★
初心者必見!Chromeの検証(デベロッパーツール)の基本的な使い方
★★★★★

抜き出した情報を画面に表示する

これは簡単ですよね。

さすがにこれは分かる

どのPythonの教材でも一番最初のページに出てくるコードprintを使っています。

#変数priceを表示しなさい
print(VTIprice.text+"$")

BeautifulSoupで抜き出した「VTIprice.text」は文字列

 

円/USDの情報ページのHTML取得→BeautifulSoupへ

VTI価格を表示したときの内容とほぼ同じです。

#情報を取得するURL
TARGET_URL_yen = "https://nikkei225jp.com/fx/"

#requestsモジュールでTARGET_URL_yenのHTMLを取得
html_Yen = requests.get(TARGET_URL_yen)
#取得したHTMLを解析するシステムにHTMLを渡す
soup = BeautifulSoup(html_Yen.content, "html.parser")

変わっているところは、URLと変数の名前くらいのものです。

 

円/USDの為替情報を抜き出す

#変数dollarにdiv class=if_curを指定
dollar = soup.find_all('div', class_='if_cur')
print(dollar[2].text+"円")

注意するところは、今回のページには『’div’, class_=’if_cur’』は3つ存在しているということです。

なので、『soup.find』の後に『_all』をつけないと、1つだけしか抜き出してくれません。そして、_allをつけて抜き出すと、データはリスト型になります。

‘div’, class_=’if_cur'[0]:日経平均株価
‘div’, class_=’if_cur'[1]:ダウ平均株価
‘div’, class_=’if_cur'[2]:為替 ドル円

円/USDの為替はリスト型のデータの3番目に格納されているので、[2]をつけるというわけです。
※リストは0から数え始めます

そういえばProgateでやったな

こういった細かい部分で、Pythonの基礎知識が生きてきます。

ただ、細かい部分の勉強ばかりしていても実際にどういった部分で使うのか理解できません。

プログラムを作る中でうまくいかない個所を調べる方がより自分の身に付きますよ!

 

VTI($)×$/円を表示する

このプログラムも基本中の基本が詰まっています。

#VTI価格($)とUSD/円を掛け合わせて表示する
print("VTI価格(円換算)"+(str(float(VTIprice.text)*float(dollar[2].text))+'円'))

文字列同士では計算できない⇒文字列を小数点型に変更
float(VTIprice.text)
float(dollar[2].text)

文字列と小数点型は結合できない⇒小数点型を文字列に変更

(str(float(VTIprice.text)*float(dollar[2].text))

あれはこうやって使うのか

これで結果が表示されたはずです。

VTI価格($)、為替、VTI(円換算)が表示される

一応実行方法も書いておきます。

Pythonプログラム実行方法

作ったはいいけど、どうやって実行するの?

実行方法も最初のうちは分からないですよね。

Pythonだけでなく、プログラムは「コマンドプロンプト」で実行します。

Python実行方法

cmdと検索して「コマンドプロンプト(cmd)」を開く。

ここで「Python プログラム名」を入力してEnterを押す。

フォルダの検索窓にcmdと入力してEnter

ここでも1つ注意点があります。

cmdはcmdを起動した場所をカレントディレクトリと認識します。

下線がcmdが認識しているカレントディレクトリ

そのため、実行してみる時は.pyプログラムが格納されているフォルダでcmdを起動するか、Pythonプログラムが置いてあるディレクトリのパスを入力するかどちらかが必要です。

C:/Users/aaaa←これがパス

好きな方法でやりましょう!

ディレクトリに関しては別の記事で詳しく説明しています。

https://himasugi.com/beginner-explained-a-directory-that-python-beginners-cant-understand

無事に実行できました!

 

まとめ

どうでしょうか。

初歩中の初歩のスクレイピングプログラムを紹介しました。

それでも、自分が作ったプログラムがきちんとした結果を返してくれるのは嬉しいですよね!

今後はもっと難しいプログラムに挑戦してみてください!

こんな感じ!

 

これって手動で毎回実行しないといけないの?

というめんどくさがり屋さんは、この記事を読んで更なる自動化への道を進んでください。

https://himasugi.com/create-a-bat-file-that-runs-python-automatically

あわせて読みたい
Pythonでスクレイピング結果LINEに送信するプログラムの作り方 Pythonで株価と為替相場(円/$)を取得して掛け合わせて表示する。 という基礎中の基礎のスクレイピングプログラムを作成しました。 ただ、これだと計算結果はPCで確認...
あわせて読みたい
PCが自動で毎日決まった時間に起動し、作業終了後シャットダウンする設定方法 PCが自動で起動して、勝手に作業をして、勝手にシャットダウンする設定をしたい。 寝てる間に面倒な作業を勝手にやって欲しい。 そういった願いがある人に朗報です。 こ...

カッパ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次