Как создать заявку на покупку акций в python

Я довольно новичок в программировании на Python .

Я хочу сделать приложение, которое будет получать цены акций из Google . Одним из примеров является CSCO (Cisco Sytems) . Затем я использовал эти данные, чтобы предупредить пользователя, когда запас достигнет определенного значения . Он также должен обновляться каждые 30 секунд .

Проблема в том, что я не знаю, как получить данные!

У кого-нибудь есть идеи?

    8 Solutions collect form web for “Как создать заявку на покупку акций в python”

    Этот модуль представлен любезностью Кори Гольдберга .

    Программа:

    import urllib import re def get_quote(symbol): base_url = 'http://finance.google.com/finance?q=' content = urllib.urlopen(base_url + symbol).read() m = re.search('id="ref_694653_l".*?>(.*?)<', content) if m: quote = m.group(1) else: quote = 'no quote available for: ' + symbol return quote 

    Пример использования:

     import stockquote print stockquote.get_quote('goog') 

    Обновление . Изменено регулярное выражение, соответствующее последнему формату Google Finance (по состоянию на 23 февраля 2011 г.). Это демонстрирует основную проблему, когда вы используете экранную скребли.

    На данный момент (2015), google finance api устарел. Но вы можете использовать модуль pypi googlefinance .

    Установите googlefinance

     $pip install googlefinance 

    Легко получить текущую цену акций:

     >>> from googlefinance import getQuotes >>> import json >>> print json.dumps(getQuotes('AAPL'), indent=2) [ { "Index": "NASDAQ", "LastTradeWithCurrency": "129.09", "LastTradeDateTime": "2015-03-02T16:04:29Z", "LastTradePrice": "129.09", "Yield": "1.46", "LastTradeTime": "4:04PM EST", "LastTradeDateTimeLong": "Mar 2, 4:04PM EST", "Dividend": "0.47", "StockSymbol": "AAPL", "ID": "22144" } ] 

    Google finance – источник, предоставляющий данные о запасах в реальном времени. Есть также другие API от yahoo, такие как yahoo-finance , но они откладываются на 15 минут для акций NYSE и NASDAQ.

     import urllib import re def get_quote(symbol): base_url = 'http://finance.google.com/finance?q=' content = urllib.urlopen(base_url + symbol).read() m = re.search('id="ref_(.*?)">(.*?)<', content) if m: quote = m.group(2) else: quote = 'no quote available for: ' + symbol return quote 

    Я считаю, что если вы используете ref_ (. *?) И используете m.group (2), вы получите лучший результат, поскольку ссылочный идентификатор изменится с запаса на запас.

    Я предлагаю использовать HTMLParser, чтобы получить значение метатег google мест в html

     <meta itemprop="name" content="Cerner Corporation" /> <meta itemprop="url" content="https://www.google.com/finance?cid=92421" /> <meta itemprop="imageUrl" content="https://www.google.com/finance/chart?cht=g&q=NASDAQ:CERN&tkr=1&p=1d&enddatetime=2014-04-09T12:47:31Z" /> <meta itemprop="tickerSymbol" content="CERN" /> <meta itemprop="exchange" content="NASDAQ" /> <meta itemprop="exchangeTimezone" content="America/New_York" /> <meta itemprop="price" content="54.66" /> <meta itemprop="priceChange" content="+0.36" /> <meta itemprop="priceChangePercent" content="0.66" /> <meta itemprop="quoteTime" content="2014-04-09T12:47:31Z" /> <meta itemprop="dataSource" content="NASDAQ real-time data" /> <meta itemprop="dataSourceDisclaimerUrl" content="//www.google.com/help/stock_disclaimer.html#realtime" /> <meta itemprop="priceCurrency" content="USD" /> 

    С кодом вроде этого:

     import urllib try: from html.parser import HTMLParser except: from HTMLParser import HTMLParser class QuoteData: pass class GoogleFinanceParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.quote = QuoteData() self.quote.price = -1 def handle_starttag(self, tag, attrs): if tag == "meta": last_itemprop = "" for attr, value in attrs: if attr == "itemprop": last_itemprop = value if attr == "content" and last_itemprop == "name": self.quote.name = value if attr == "content" and last_itemprop == "price": self.quote.price = value if attr == "content" and last_itemprop == "priceCurrency": self.quote.priceCurrency = value if attr == "content" and last_itemprop == "priceChange": self.quote.priceChange = value if attr == "content" and last_itemprop == "priceChangePercent": self.quote.priceChangePercent = value if attr == "content" and last_itemprop == "quoteTime": self.quote.quoteTime = value if attr == "content" and last_itemprop == "exchange": self.quote.exchange = value if attr == "content" and last_itemprop == "exchangeTimezone": self.quote.exchangeTimezone = value def getquote(symbol): url = "http://finance.google.com/finance?q=%s" % symbol content = urllib.urlopen(url).read() gfp = GoogleFinanceParser() gfp.feed(content) return gfp.quote; quote = getquote('CSCO') print quote.name, quote.price 

    На всякий случай вы хотите извлечь данные из Yahoo … Вот простая функция. Это не очищает данные от обычной страницы. Я думал, что у меня есть ссылка на страницу, описывающую это в комментариях, но я не вижу ее сейчас – есть волшебная строка, добавленная к URL-адресу для запроса определенных полей.

     import urllib as u import string symbols = 'amd ibm gm kft'.split() def get_data(): data = [] url = 'http://finance.yahoo.com/d/quotes.csv?s=' for s in symbols: url += s+"+" url = url[0:-1] url += "&f=sb3b2l1l" f = u.urlopen(url,proxies = {}) rows = f.readlines() for r in rows: values = [x for x in r.split(',')] symbol = values[0][1:-1] bid = string.atof(values[1]) ask = string.atof(values[2]) last = string.atof(values[3]) data.append([symbol,bid,ask,last,values[4]]) return data 

    Здесь я нашел ссылку, которая описывает магическую строку: http://cliffngan.net/a/13

    http://docs.python.org/library/urllib.html для получения произвольных URL-адресов.

    Кроме того, вам лучше посмотреть какой-то веб-сервис, предоставляющий данные в формате JSON.

    В противном случае вам придется выполнять разбор и т. Д. Самостоятельно.

    Скриншоты yahoo.com для получения акций вряд ли будут правильным путем к успеху.

    Вы можете начать с изучения API Google Finance , хотя я не вижу API или оболочку Python. Похоже, что единственными параметрами для прямого доступа к данным являются Java и JavaScript. Вы также можете использовать cURL, если вы знакомы с ним, и он доступен в вашей системе.

    Еще одним хорошим местом для начала является собственный API Google Finance: http://code.google.com/apis/finance/. Вы можете посмотреть свои финансовые гаджеты для некоторого примера кода.

      Python - лучший язык программирования в мире.