2016-05-21 9 views
0

私はYahoo Financeサイトから基本データを要求するスクリプトを移植しようとしていますが、価格のようなレポート全体ではなく特定のアイテムを探したいと思います例えば、書籍の比率。ですから、Sentdexのチュートリアルに従っています。問題は、サンプルコードがPython 2.7用に書かれていて、私はPython 3用にその作業をしようとしていますが、さらに機能を追加することでそれを拡張しようとしています。Python 3を使用してYahoo Financeサイトから株式情報を取得する

import time 
import urllib 
import urllib.request 


sp500short = ['a', 'aa', 'aapl', 'abbv', 'abc', 'abt', 'ace', 'aci', 'acn', 'act', 'adbe', 'adi', 'adm', 'adp'] 


def yahooKeyStats(stock): 

    try: 
     sourceCode = urllib.request.urlopen('http://finance.yahoo.com/q/ks?s='+stock).read() 
     pbr = sourceCode.split('Price/Book (mrq):</td><td class="yfnc_tabledata1">')[1].split('</td>')[0]  
     print ('price to book ratio:'),stock,pbr 

    except Exception as e: 
     print ('failed in the main loop'),str(e) 


for eachStock in sp500short: 
    yahooKeyStats(eachStock) 
    time.sleep(1) 

私はこの問題は、それの分割部に、PBR変数の定義にある、ほぼ確信している:ここで

は、それがこれまでに見ているかです。 :

Price/Book (mrq):</td><td class="yfnc_tabledata1"> 

そして...:私が探しているものをと

</td> 

が...ちょうどソート区切り文字のある、実際の値は、上に挙げた二つのアイテムの間にあります。しかし、これまでは、実行時に例外メッセージしか表示されませんでした。

ご協力いただければ幸いです。 乾杯、

+0

などBeautifulSoupなどのHTMLパーサを使用してください。 –

+1

ウェブページを削ることなくあなたが望むことをする方法はたくさんあります...関連:http://stackoverflow.com/questions/12433076/download-history-stock-prices-automatically-from-yahoo-finance-in-python –

答えて

1

タイプbytesでデータを返しているurllib.request.urlopen.read()のように見えます。 Pythonのドキュメントから

:urlopenバイトオブジェクトを返す

注意。これは、httpサーバから受信したバイトストリームのエンコードをurlopenが自動的に判断する方法がないためです。一般に、プログラムは、返されたバイトオブジェクトを、適切なエンコーディングを決定したり推測したりすると、ストリングにデコードします。

分割方法はここでは失敗しています。 .read()の後に.decode()を追加してみてください。問題は、タイプbytessourceCode変数を文字列で分割しようとしていることです。 sourceCodeをデコードすると、バイトから文字列に変換されます。また、両方の区切り文字を.encode()にすることもできます。

bytes.decode

+0

良い点!私はそれをして、それは問題コードブロックが現在処理されているようだが、まだ部分的に私はスクリプトからの値段に予約率を受け取っているが、値自体ではない:sourceCode = urllib.request.urlopen( 'http ://finance.yahoo.com/q/ks?s = '+ stock).read().decode() – dude

+0

この例では、文字列を印刷する構文がオフになっているようです。次のようにする必要があります。 'print( 'book to ratio:'、株価、pbr)' –

+0

ありがとうございます!!それはそれをした! :D – dude

関連する問題