アメリカのNYSEの株価のティッカーリストをpythonで取得する
GeminiとCopilotに聞いてみながらやってみた。
2024年6月時点では、pythonのプログラミングのお供には、圧倒的にCopilot(ChatGPT)の方がよい感じ。
質問
NYSEに上場している会社の番号のリストをtickerList_NYSE.txtとして出力するpythonのプログラムを作成してください。
tickerList_NYSE.txtの内容は、以下のような感じでお願いします。
------------------
9474
9501
9502
9503
9504
9505
9506
9507
9508
9509
9511
9513
9517
------------------
開発環境
Windows11 Pro
Jupyter Lab
今回必要だったもの
!pip install pandas_datareader
Copilotの答え
コードを実行すると、以下のようなエラー
エラーをコピーしてもう一度聞く
新しいコードをコピペすると、以下のようなエラー
もう一度エラーをぶちこんで聞く
と言われたので、
!pip install pandas_datareader
と入力してやってみる
pandas_datareaderをインストール後、再度、上記コードを実行。
がっくし。
しばらくしてから、pythonにこだわらずに、聞き直してみることにした。
NYSEウェブサイトから、nyse 上場企業 一覧のティッカーのリストを取得する方法について、ステップバイステップで教えてください
で
# 必要なライブラリをインポート
import pandas as pd
import pandas_datareader as web
# WikipediaのページからNYSEに上場している企業の一覧を取得
data = pd.read_html('https://en.wikipedia.org/wiki/List_of_companies_listed_on_the_New_York_Stock_Exchange')
# ead_html関数はページ内のすべてのテーブルを取得しますので、適切なテーブルを選択します(通常は最初のテーブル)
data = data[1]
# テーブルからティッカーの列を取得します
data = data[['Company', 'Symbol']]
# ティッカーのリストをテキストファイルに出力
data['Symbol'].to_csv('tickerList_NYSE.txt', index=False)
を入力してみても、結局、
ModuleNotFoundError: No module named 'distutils'
のエラーが出てしまうので、Python 3.9以下ではないとダメらしいので、これではダメ。やっと気づきました。以下のように聞けばよいのですね。だんだん、プロンプトエンジニアリングに慣れてきたかも!?
import requests
from bs4 import BeautifulSoup
import pandas as pd
def get_nyse_tickers():
# Wikipediaのページからデータを取得
url = 'https://en.wikipedia.org/wiki/List_of_companies_listed_on_the_New_York_Stock_Exchange'
response = requests.get(url)
# BeautifulSoupオブジェクトを作成
soup = BeautifulSoup(response.text, 'html.parser')
# テーブルを見つける
table = soup.find('table', {'class': 'wikitable sortable'})
# テーブルが見つからない場合のエラーチェック
if table is None:
raise ValueError("Could not find the table. The structure of the Wikipedia page might have changed.")
# データを抽出
rows = table.findAll('tr')
data = []
for row in rows[1:]:
cols = row.findAll('td')
data.append([col.text.strip() for col in cols])
# DataFrameを作成
df = pd.DataFrame(data, columns=['Symbol', 'Company', 'SEC filings', 'GICS Sector', 'GICS Sub-Industry', 'Headquarters Location', 'Date first added', 'CIK', 'Founded'])
# ティッカーの列だけを取得
df = df[['Symbol']]
return df
# NYSEに上場している会社のティッカーを取得
try:
df = get_nyse_tickers()
# ティッカーのリストをテキストファイルに出力
df.to_csv('tickerList_NYSE.txt', index=False)
except ValueError as e:
print(e)
があん、Wikipedia, 見に行きます。
https://en.wikipedia.org/wiki/Lists_of_companies_listed_on_the_New_York_Stock_Exchange
ぎゃー!こりゃだめだ!
https://en.wikipedia.org/wiki/Companies_listed_on_the_New_York_Stock_Exchange_(A) を見に行っても、
このページのURLを変えて、上記コードに入れても、ダメでした。
もしかして、Google検索でcsvファイルを探した方が早い???(う、)
Pythonはあきらめ、Google検索「Lists of companies listed on the New York Stock Exchange csv」
https://github.com/ahmeterenodaci/New-York-Stock-Exchange–NYSE–including-Symbols-and-Logos
ちゃんと下の方に、欲しいcsvファイルがありました。最初からGoogle検索していれば、、、
無事、csvファイルをゲットすることができました。
ディスカッション
コメント一覧
まだ、コメントがありません