金融チュートリアルシリーズのためのパート5のPythonへようこそ。このチュートリアルと次のいくつかのセクションでは、我々はより多くの企業に価格情報の多くを提供し、どのように進めるために、このすべてのデータを処理する方法を検討します。
まず、私たちは企業のリストを必要としています。私はあなたのリストを与えることができますが、実際には多くの課題の一つは、あなただけ発生する可能性があるかもしれない銘柄のリストを取得します。私たちのケースでは、我々はS&P 500企業のPythonのリストを必要としています。
あなたはダウ・ジョーンズ、S&P 500またはラッセル3000指数を探しているかどうか、これらの企業はどこかに投稿する可能性があるリリース。あなたはそれが最新であることを確認するだろうが、それは完全な形式ではないかもしれません。ます。http://en.wikipedia.org/wiki/List_of_S%26P_500_companiesこの例では、ウィキペディアのリストを取得します。
テーブルの上にウィキペディアコード/記号組織。この問題を解決するために、我々は、HTML構文解析ライブラリ、美しいスープを使用します。
まず、我々はいくつかのライブラリから起動します。
BSのように輸入BS4 輸入ピクルス のインポート要求
我々は簡単にWikipediaのランタイムをノックではなく、それぞれの時間よりも、企業のリストを保存することができますように(このリストを更新することを忘れないものの!)BS4はbeautifulsoup、漬物で、我々はWikipediaのページからソースコードを取得するための要求を使用します。 。
私たちは、機能を起動します。
デフsave_sp500_tickers(): RESP = requests.get( 'http://en.wikipedia.org/wiki/List_of_S%26P_500_companies') スープ= bs.BeautifulSoup(resp.text、 'lxmlの') 表= soup.find(」テーブル」{ 'クラス': 'wikitableソート'})
まず、我々はWikipediaのページを訪問し、私たちのソースコードを含む応答を提供します。我々はBeautifulSoupステアリングスープを使用し、我々は.textのプロパティを訪問したいと考えて、ソースコードを扱いたいです。あなたはあなたのための身近なBeautifulSoupの仕事でない場合、それは基本的に突然BeautifulSoupオブジェクトにソースコードを変換し、より一般的なPythonオブジェクトとみなすことができます。
ウィキペディア一度はPythonへのアクセスを拒否しようとします。現在、私はこの記事を書く、コードの作品は、ヘッダファイルを変更しません。あなたはリターンとして元のソースコード(resp.text)を見つけた場合は、ご自宅のコンピュータ上で同じページを参照してくださいように見える、と次のように変更にRESP VARコードを追加しません。
ヘッダー= { 'のUser-Agent': 'のMozilla / 5.0(X11;のLinux i686の)のAppleWebKit / 537.17(KHTML、ヤモリ等)クローム/ 24.0.1312.27サファリ/ 537.17'} RESP = requests.get( 'のhttp:// EN .wikipedia.org /ウィキ/ List_of_S%26P_500_companies'、 ヘッダ=ヘッダ)
私たちはスープを持っていたら、私たちは単にを検索することができます wikitable sortable
クラス。私が最初にソースコードのブラウザで見ているので、この表で指定された唯一の理由は知っています。おそらくそれは、テーブルにあるか、またはそれはリスト可能性があり、それはdivタグのいくつかの可能性があり、あなたが別のサイトに銘柄のリストを解決したい、一定の期間があるかもしれません。それはちょうど非常に特化したソリューションです。ここから、私たちはテーブルをトラバース:
テロップ= [] table.findAllの行( 'TR')[1:]: ティッカー= row.findAll( 'TD')[0]の.text tickers.append(ティッカー)
各行に対して、(私たちが望む理由である[1:]を開始するために)タイトル行の後、我々は株式市場は、「表データ」(TD)であると言う、我々はそれを.textセクションつかむ、我々は、このコードを追加します。私たちのリストに。
私たちは、このリストを保存することができれば今、それは素晴らしいことです。私たちは、Pythonは私たちのためにそれをオブジェクトシリアライズするpickleモジュールを使ってこれを行います。
:Fとして( "sp500tickers.pickle"、 "WB")のオープンと pickle.dump(ティッカー、f)は リターンティッカー
私たちは毎日、ウィキペディアへの多くの要求を持っていないように、コンテンツを継続して保存することを願っています。いつでも、私たちは、このリストを更新することができ、あるいは我々はそうで......月に一度、それをプログラムすることができます。
これまでの完全なコード:
インポートBS4 BSとして ピクルスインポートする インポート要求を DEF save_sp500_tickers(): RESP = requests.get( 'http://en.wikipedia.org/wiki/List_of_S%26P_500_companies') スープ= bs.BeautifulSoup(resp.text、 'lxmlの' ) 表= soup.find( 'テーブル' { 'クラス': 'wikitableソート'}) テロップが= [] table.findAllの行のための( 'TR')[1:]: ティッカー= row.findAll( 'TD 「)[0]の.text tickers.append(ティッカー) Fとして( "sp500tickers.pickle"、 "WB")オープン有する: pickle.dump(テロップ、F) リターンテロップの save_sp500_tickers()
今、私たちはコードを知って、私たちは次のチュートリアルの事で行いますすべての情報を抽出する準備が整いました。