スポンサーリンク

アメリカの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ファイルをゲットすることができました。