人気ブログランキング | 話題のタグを見る
<< 「TH69の亜米利株」Ver.... 「TH69の亜米利株」Pyth... >>

PythonでWEBスクレイピングをやってみました!

TH69です。

Pythonによる株価取得ファイルですが、エラーでたまに止まってしまうことがあるので調べてみました。

するとエラーは株価や配当利回り取得時に発生しているのではなく、一番最初に行っているドル円レートの為替相場取得時であることが分かりました。ドル円レートはPythonのライブラリの一つである「pandas-datareader」で取得していましたが、それを従来のVBAによるWEBスクレイピングと同じサイトでやってみることにしました。

色々調べてみたところ、PythonでのWEBスクレイピングはメッチャ簡単であることが分かりました。思い通りに取得できないサイトもありますが、私が利用しているYahooFinance(日本)では簡単にドル円レートを取得することができました。


ちなみに今回作成したのは下のスクリプトです。

import requests
from bs4 import BeautifulSoup
url = "https://finance.yahoo.co.jp/quote/USDJPY=X"
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
elems = soup.select('._1c9rs8VH > span:nth-child(1)')
price = elems[0].contents[0]
print(price)

「BeautifulSoup4」というライブラリのインストールは必須です。

「url」にWEBスクレイピングしたいサイトのURLを指定します。
「elems = soup.select」の右のカッコに取得したい箇所の「CSSセレクター」の値を入力します。

これだけで「Price」にその値(今回はドル円レート)が返ってきます。って、めちゃくちゃ簡単やん!


その「CSSセレクター」の値の取得方法を説明します。

1)WEBスクレイピングしたいサイトをブラウザで開きます(私の場合はFirefoxです)
PythonでWEBスクレイピングをやってみました!_e0382354_15524326.gif

2)取得したい箇所のテキストをマウスで選択(今回は「134.7700」)し、右クリックメニューから「調査」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_15524779.gif

3)すると何か解析の画面が出るので、ハイライトされた箇所の右クリックメニューから「コピー>CSSセレクター」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_15525189.gif

4)これで「CSSセレクター」が取得できるはずです。
(今回は「._1c9rs8VH > span:nth-child(1)」が取得できました)


5)ほかのブラウザでもほぼ同じやり方で取得できます。「Microsoft Edge」では「開発者ツールで調査する」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_15525531.gif

6)同様に開いた解析ページのハイライトされた部分の右クリックメニューから「コピー>selectorをコピー」をクリックします。
PythonでWEBスクレイピングをやってみました!_e0382354_16062168.gif
7)これで「selector」が取得できるはずです。
(今回は「#contents > div > div._1ziqiIUl > div:nth-child(5) > div:nth-child(1) > div._1-HjOuwn > div._103wsUl4 > div._2AQd5-ZG > p._1c9rs8VH > span」が取得できました)


8)使用するブラウザによって取得できる値は違うこともあるようですが、どちらでも問題なく「134.7700」が取得できました。


今回の改良でさらに公開時期が近付いたかも…。従来と為替レートも同じになったので、ほぼ差異がなくなりました。

では、よい投資を!




by th1252 | 2023-05-06 16:19 | Python | Trackback | Comments(0)
名前
URL
削除用パスワード
<< 「TH69の亜米利株」Ver.... 「TH69の亜米利株」Pyth... >>