Pythonで為替情報をスクレイピングする方法(BeautifulSoup)
2018/01/10
PythonはWeb上のデータをスクレイピングするのがとても楽ちんでです。BeautifulSoupというライブラリを使います。
[ad#top-1]
まずはライブラリBeautifulSoupをインストール
Pythonでスクレイピングできる便利なライブラリ「BeautifulSoup」を使います。まずはそれをインストールしましょう。pipコマンドを使います。
#Windowsの場合 pip install beautifulsoup4 #Linuxの場合 pip3 install beautifulsoup4
さっそくスクレイピング!
Yahoo!ファイナンスの以下のページからドル円の値をGETしてみましょう。
まず、WebページのHTMLの中のどこにあるか確認する必要があります。Chromeブラウザの場合、為替額のところで右クリックして、「検証」を選びます。
すると、右側にHTMLタグが現れるのですが、右クリックした個所を示してくれています。
この中の、class="stoksPrice"
という部分を覚えておきましょう。
スクレイピングするソースコードはこちらです。(1)のところを見ていただくとわかりますが、stoksPrice
を指定しています。
from bs4 import BeautifulSoup import urllib.request as req url="https://stocks.finance.yahoo.co.jp/stocks/detail/?code=usdjpy" res = req.urlopen(url) soup = BeautifulSoup(res, 'html.parser'); d1 = soup.select_one(".stoksPrice").string #(1) print(d1)
これを実行すると以下の通りドル円の価格がGETできました。
ただ、このページは秒単位のリアルタイムでは価格が更新されないのが欠点です。次はリアルタイムに為替額が変わるページでやってみましょう
ページはこちらです。FXページなので常に価格が更新されます。
赤い丸のところを検証してみると、要素名はUSDJPY_detail_bid
となっていました。なので、先ほどの(1)のところを、d1 = soup.select_one("#USDJPY_detail_bid").string
に変えましょう。
実行した結果がこちら。Noneと出てしまっています。為替額が取得できませんでした。
これは、USDJPY_detail_bid要素の中に子要素largeがあるからで、文字列として取得できないからです。
以下のようにソースコードを変えてみましょう。
from bs4 import BeautifulSoup import urllib.request as req url="https://info.finance.yahoo.co.jp/fx/detail/?code=USDJPY=FX" res = req.urlopen(url) soup = BeautifulSoup(res, 'html.parser'); vals = soup.select_one("#USDJPY_detail_bid").findAll(text=True) d1=''.join(vals) print(d1)
これを実行すると以下の通りGETできました。
vals = soup.select_one("#USDJPY_detail_bid").findAll(text=True)
で、[112.]と[30]と[9]の配列データが得られます。なので、その次で
d1=''.join(vals)
と配列を結合することで文字列に変換したわけですね。
この本はかなりお勧めです。
[ad#ad-1]
スポンサーリンク