4

インスタント株価を取得するための小さなスクリプトを作成しました。

#script to get stock data

from __future__ import print_function
import urllib
import lxml.html
from datetime import datetime
import sys
import time

stocks=["stock1","stock2","stock3","stock4","stock5"]

while True:
 f=open('./out.txt', 'a+')
 for x in stock:
  url = "http://someurltofetchdata/"+x
  code   = urllib.urlopen(url).read()
  html   = lxml.html.fromstring(code)
  result = html.xpath('//td[@class="LastValue"][position() = 1]')
  result = [el.text_content() for el in result]
  f.write(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + ' ' + x + ' ' + result[0])
  f.write("\n")
 f.close()

株式市場が開いている時間、つまり取引時間にのみデータをフェッチするコードが必要です。(09:00~12:30、13:30~17:30)。

コードで暗黙的にスケジューリングを実行する方法を提案していただけますか? (OS レベルではありません)

4

3 に答える 3

4

cron (タスクを実行する最も簡単な方法) を使用できない場合は、これをコードに追加できます。指定された時間範囲内であればデータをダウンロードし、60 秒間スリープしてから再度実行します。

while True:
    now = datetime.now().strftime('%H%M')
    if '0900' <= now <= '1230' or '1330' <= now <= '1730':
        # your code starting with f=open('./out.txt', 'a+')
    time.sleep(60)
于 2013-01-03T12:24:01.293 に答える
2

APSchedulerを見てみましょう

from apscheduler.scheduler import Scheduler
sched = Scheduler()

@sched.interval_schedule(hours=3)
def some_job():
    print "Decorated job"

sched.configure(options_from_ini_file)
sched.start()

time.date を指定することもできます

job = sched.add_date_job(my_job, datetime(2009, 11, 6, 16, 30, 5), ['text'])

明らかに、関連する時間にこれらをオンまたはオフsched.start() sched.stop()にするコードを作成する必要がありますが、その後、デコレータを自動的にオンに設定したのと同じ頻度でデータを取得します。スケジュールを立てることもできます!

于 2013-01-03T12:44:28.950 に答える