1

Yahoo Fiances からさまざまな株価を取得するためのチュートリアルに取り組んでいます。機能するこのコードがありますが、さまざまな株式シンボルの価格と配列ブラケットを出力しますが、価格は出力しません。すべてのヘルプは大歓迎です。

import urllib
import re

symbolslist = ["aapl", "spy", "goog", "nflx"]

i = 0
while i < len(symbolslist):
    url = "http://finance.yahoo.com/q?s=" + symbolslist[i] + "&ql=1" 
    htmlfile = urllib.urlopen(url)
    htmltext = htmlfile.read()
    regex = '<span id="yfs_l84_' + symbolslist[i] + ' "> (.+?) </span>'
    pattern = re.compile(regex)
    price = re.findall(pattern, htmltext)
    print "the price of ", symbolslist[i], " is ", price
    i += 1
4

2 に答える 2

1

編集:考え直して、あなたの正規表現は何にも一致していません。最初に正規表現が正しいかどうかを確認してください。

EDIT2: OK、必要のない場所に空白を入れているようです(そして、あるべき場所に入れていません)。自分自身で使用するためだけでなく、特に他の人に見せるときにも、コードのフォーマットに関しては、将来的にはより整然としたものになるようにしてください。正しい正規表現は次のとおりです。

regex = '<span id="yfs_l84_' + symbolslist[i] + '">(.+?)</span>'

それ以外...

最も簡単な修正は、これを変更することです

price = re.findall(pattern, htmltext)

price = re.findall(pattern, htmltext)[0]

単一のアイテムではなくre.findallリストを返し、リストの文字列表現は[bla, bla, bla, ...].

さらに、アイテムのシーケンスをループするためにwhile、手動カウンターとインデックス付けでループを使用しないでください。これはアセンブラーではありません。

for symbol in symbols:
    ...
于 2013-10-23T21:18:45.017 に答える
-2

' "> の間のスペースが問題を引き起こしている可能性があります

于 2013-10-23T21:33:39.417 に答える