2015-11-05 109 views
1

我拿出股票代碼程序,程序要求用戶輸入符號,但raw_input失敗。我正在搞雅虎金融。這是代碼:謝謝!爲什麼raw_input失敗?

import urllib2 
from bs4 import BeautifulSoup as bs4 
symbol = raw_input("enter a stock") 
def get_all_info(): 
    i = 0 
    while i < len(list): 
     url = urllib2.urlopen("https://in.finance.yahoo.com/q?s=" + symbol[i] + "&ql=0") 
     soup = bs4(url,"html.parser") 
     for price in soup.find(attrs={'id':"yfs_l84_" + symbol[i]}):    
     print "real time price: " + price 
     i += 1 
print get_all_info() 

,這是錯誤:

traceback (most recent call last): 
    File "C:/Users/Raunaq/PycharmProjects/stock_market_work/ask.py", line 18, in  <module> 
    print get_all_info() 
    File "C:/Users/Raunaq/PycharmProjects/stock_market_work/ask.py", line 14, in get_all_info 
    for price in soup.find(attrs={'id':"yfs_l84_" + name[i]}): 
TypeError: 'NoneType' object is not iterable 

回答

1

當我發現你需要輸入股票名稱列表,並通過BeautifulSoup刮雅虎財經打印出他們的成本,如果是的話這裏是完整的代碼:

import urllib2 
from bs4 import BeautifulSoup as bs4 

def get_all_info(): 
    i = 0 
    while i < len(list1): 
     url = urllib2.urlopen("https://in.finance.yahoo.com/q?s=" + list1[i] + "&ql=0") 
     soup = bs4(url,"html.parser") 
     price = soup.find(attrs={'id':"yfs_l84_" + list1[i]}) 
     if price:  
      print ("real time price (for {0}): {1}".format(list1[i],price.contents[0])) 
     i += 1 


if __name__ == "__main__": 
    stocks = raw_input("enter stocks names (space separated): ") 
    list1 = stocks.split() 
    get_all_info() 

運行:

python script_name.py

enter stocks names (space separated): yhoo goog

real time price (for yhoo): 35.07

real time price (for goog): 728.11

+0

謝謝了很多救了我! –

+0

嗨! 「格式(list1 [i],price.contents [0]))」是做什麼的???????? –

+0

這只是string.format而不是字符串concatination – Serjik