競プロに片足突っ込んだ話

競プロに片足突っ込んでます。

片足突っ込んだ挙句、もう片足も突っ込んでソフトウェアエンジニアになるか、もう片足は金融に突っ込んでクオンツファンドマネージャーになるか、そこは考え中です。

ひとまずAtCoderの初心者用問題10問は解き終えたところ。ソートも使わずPythonで突っ込んでいくあたり、初心者感丸出しですが、、勉強不足は、まあ、有り余る才能でカバーしたいと思っております。

レーティングを見た感じ、今年中に水色とかが程よく厳しい目標なんですかね。アルゴリズムとかデータ構造の授業は数年前に受けて記憶の彼方なんで、コンテストに参加しつつそこら辺の復習から始めることにします。

shibh308.hatenablog.com

 

色々やることはありそうですね、、それに加えて最近マーケットに触れてないんでFXでも始めますかーって思ってるこの頃です。

締まってないけど、今回はこんなところで

Pythonを使ってBloombergからデータスクレイビングする話

こんばんは、気づいたらUSのマーケット開いてますね、夜です。

SPXは順調に過去最高値を目指して行進中です。

さて、今日のテーマはタイトル通りです。個人でもマーケットのリアルタイムデータが取りたい的なモチベーションでデータスクレイビングを思い立ち、通貨・商品のデータも揃ってるBloombergから拝借するかーみたいなノリでおもむろにコーディングし始めた感じです。

当方スクレイビングは初心者なこともあり、ネットの記事のツギハギでようやく完成しました。データ乞食するためにソースコードまで乞食する、情けない限りです。

まず参考にしたサイトがこれ。

qiita.com

これが大枠です。ところがPython3に適用するところで問題発生。

そこで参考にしたサイトがこれ。

teratail.com

スクレイビングの基礎知識って意味でこれも。

qiita.com

これで完成したのが以下のコード(ほぼ丸パクリ)。

# coding: UTF-8
import urllib3
from bs4 import BeautifulSoup

# アクセスするURL
url = "https://www.bloomberg.co.jp/quote/SPX:IND"

# URLにアクセスする htmlが帰ってくる
http = urllib3.PoolManager()
response = http.request('GET',url)

# htmlをBeautifulSoupで扱う
soup = BeautifulSoup(response.data, "html.parser")

# div要素全てを摘出する→全てのdiv要素が配列に入ってかえされます→[<div class="m-wficon triDown"></div>, <div class="l-h...
div = soup.find_all("div")

# print時のエラーとならないように最初に宣言しておきます。
price = ""
# for分で全てのspan要素の中からClass="price"となっている物を探します

for tag in div:
    # classの設定がされていない要素は、tag.get("class").pop(0)を行うことのできないでエラーとなるため、tryでエラーを回避する
    try:
        # tagの中からclass="n"のnの文字列を摘出します。複数classが設定されている場合があるので
        # get関数では配列で帰ってくる。そのため配列の関数pop(0)により、配列の一番最初を摘出する
        # <div class="hoge" class="foo">  →   ["hoge","foo"]  →   hoge
        string_ = tag.get("class").pop(0)

        # 摘出したclassの文字列にpriceと設定されているかを調べます
        if string_ in "price":
            # priceが設定されているのでtagで囲まれた文字列を.stringであぶり出します
            price = tag.string
            # 摘出が完了したのでfor分を抜けます
            break
    except:
        # パス→何も処理を行わない
        pass

# 摘出した価格を出力します。
print(price)

次回は時系列データを取ってきたり、銘柄ごとにデータ取ったりみたいな話になると思います。では。

自己紹介

初めまして、ベタオリです。

簡単に自己紹介をすると

こんな感じです

トレーディングの成績、自身の学習過程のメモみたいな感じで使わせてもらおうと思います。

どうぞよろしくお願いいたします。