2014-11-17 4 views
-1

У меня есть скрипт в python3, который я запускаю как в окнах, так и в osx, но он зависает после отображения 1 диаграммы. Я также задаюсь вопросом, могу ли я ускорить процесс соскабливания на yahoo.Фондовый экран в Python Hangs после показа только 1 диаграммы

http://pastebin.com/BeDVkA05

import time 
import urllib 
import urllib.request 
import Quandl 
import matplotlib 
import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

def yahooKeyStats(stock): 
try: 
    sourceCode = urllib.request.urlopen('http://au.finance.yahoo.com/q/ks?s='+stock).read() 
    pbr = str(sourceCode).split('Price/Book (mrq):</td><td class="yfnc_tabledata1">')[1].split('</td>')[0] 

    if float(pbr) < 2.00: 

     PEG5 = str(sourceCode).split('PEG Ratio (5 yr expected)<font size="-1"><sup>1</sup></font>:</td><td class="yfnc_tabledata1">')[1].split('</td>')[0] 
     if 0 < float(PEG5) < 2: 

      PE12t = str(sourceCode).split('Trailing P/E (ttm, intraday):</td><td class="yfnc_tabledata1">')[1].split('</td>')[0] 
      ofInterest.append(stock) 
      print('______________________________\n'+ 
      'stock meets requirements ' + stock + '\n' + 
      'price book ratio ' + pbr + '\n' + 
      'price earnings growth 5 years ' + PEG5 + '\n'+ 
      'trailing PE 12 months ' + PE12t + '\n' + 
      '______________________________') 

      netIncome = Quandl.get(("DMDRN/"+stock+"_NET_INC"), trim_start="2002-12-31", trim_end="2012-12-31", 
         ) 
      revenue = Quandl.get(("DMDRN/"+stock+"_REV_LAST"), trim_start="2002-12-31", trim_end="2012-12-31", 
            ) 
      ROC = Quandl.get(("DMDRN/"+stock+"_ROC"), trim_start="2002-12-31", trim_end="2012-12-31", 
           ) 
      print(netIncome, revenue, ROC) 

      plt.subplot(3,1,1) 
      plt.title(stock) 
      plt.ylabel("Net Income") 
      plt.plot(netIncome.index, netIncome) 

      plt.subplot(3,1,2) 
      plt.ylabel("Revenue") 
      plt.plot(revenue.index, revenue) 

      plt.subplot(3,1,3) 
      plt.ylabel("Return on Capital") 
      plt.xlabel("year") 
      plt.plot(ROC.index, ROC) 
      plt.show() 
    return ofInterest 

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


for eachStock in sp500u: 
    yahooKeyStats(eachStock) 
+0

Пожалуйста, прочитайте о [MCVEs] (http://stackoverflow.com/help/mcve) и сделайте один для своей проблемы. Минимальный - как можно меньше, чтобы показать проблему. Завершить - включить весь необходимый импорт, а также пример ввода и вывода. Подтверждаем - вы запустили код, и он показывает то же поведение, что и ваша оригинальная версия. Наконец, пожалуйста, включите ** полный текст ** любых ошибок или трассировок, которые вы получаете. – MattDMo

+0

Извините, добавил импорт, но я не получаю никаких сообщений об ошибках, которые код просто зависает. – hamm44

ответ