皆さんこんにちは!今日は、ここ最近米国市場に上場した新興企業たちの株価の変動を調査し、そのデータを視覚化してみたいと思います。このようなデータは、新興企業の成長性や市場の反応を理解する上で非常に価値がありますよね。
しかし、問題はこのデータをどのように収集するかという点です。市場のデータを一つ一つ手作業で集めるのは非効率的で、時間もかかってしまいます。そこで今回は、Pythonのスクレイピング技術を使って、IPO企業の株価データを自動で集める方法を皆さんにご紹介します。
スクレイピングとは?
スクレイピングとは、ウェブサイトから情報を収集する技術のことです。特定のパターンをもとに自動で情報を抽出し、それを分析しやすい形に整理します。この技術を使えば、大量のデータを迅速かつ正確に収集することができるのです。
Pythonにはスクレイピングを簡単に行うためのライブラリがいくつかあります。今回はその中でも特に人気のあるrequestsとBeautifulSoupを使ってみます。requestsはウェブサイトへのアクセスを簡単に行い、BeautifulSoupはウェブページのHTMLを解析して必要なデータを抽出することができます。
実際にスクレイピングしてみよう
実際には、StockAnalysis.comにアクセスして、2020年以降にNasdaqにIPOした企業のリストを取得します。このサイトには最新のIPO情報が定期的に更新されており、私たちのプロジェクトには欠かせない情報源となります。
では、以下にスクレイピングのサンプルコードを示しましょう。注意点として、スクレイピングはウェブサイトの利用規約に違反しないように行う必要があります。また、サーバーに負担をかけないよう、アクセスの間隔を適宜あけてくださいね。
ライブラリのインポート
まずは毎度おなじみですね!requestsとBeautifulSoupは、ウェブページからデータを取得し、HTMLを解析するために使用します。
現在の年を取得し、年ごとのループを実行
今回のデータのダウンロード先は各年ごとにIPOした企業のTickerが載っていました。なのでPythonのdatetimeモジュールを使用して現在の年を取得します。取得した現在の年から遡って、過去の年ごとにURLにアクセスし、そのページが存在するかを確認します。
データの抽出と保存
ページが存在する場合は、BeautifulSoupを使ってHTMLを解析し、'const data'を含むJavaScriptスクリプトタグを見つけます。そのスクリプトから、ティッカーシンボル(ticker)、IPO日(ipo_date)、企業名(name)、IPO価格(ipo_price)の情報を含む部分を正規表現を使って検索し、マッチした各部分から情報を抽出します。抽出したデータをリストに格納し、そのリストをpandas.DataFrameに変換します。最終的に、このデータフレームをCSVファイルとして保存します。
ご覧の通り、2019年以降2096社がIPOしたことがわかります。次回の記事ではこのデータを使って何か面白い発見が無いか見ていこうと思います。
いつも読んでいただきありがとうございます!是非クリックお願いします!
※注意事項
このコードは、指定されたウェブサイトの特定の年のIPO情報を自動的に収集し、整理する強力なツールです。ただし、スクレイピングは対象ウェブサイトの負荷に注意し、利用規約を遵守することが重要です。また、ウェブサイトの構造が変更されると、このスクリプトを更新する必要があるかもしれません。
参考サイト