我正在开发一个解析来自多个网站的股票数据的程序。我为每个股票使用的网站是相同的,幸运的是,大多数网站都很容易生成网址。
EX:雅虎的股票摘要页面网址为“https://finance.yahoo.com/quote/”+ +自动收报机+“?p =”+自动收报机 我需要做的就是提示用户输入公司代码,我可以轻松生成一个可用的URL来解析BeautifulSoup
ticker = input("Enter Company Ticker:")
ticker = ticker.strip()
URLyahooSum = "https://finance.yahoo.com/quote/"+ticker+"?p="+ticker
print(URLyahooSum)
>>> https://finance.yahoo.com/quote/CBG?p=CBG
这部分很简单,我可以运行程序来解析用户输入的单个代码的数据,但是,现在我试图将ticker变量设置为等于将运行程序的一篮子代码在篮子中的每个单独的自动收报机上,将所有输出保存为不同的.csv文件,我可以放在SQL数据库中,我可以不断地将公司篮子从最好到最差排名。
我正在尝试一次征服一个方面,所以现在我只关心如何告诉程序将“ticker”变量单独设置到篮子中的每个自动收报机并运行直到达到最后一个自动收报机。
我已经在.csv文件中的数据库中拥有了我想要的一揽子公司代码,所以我怎么能告诉程序我希望“ticker”等于这些公司中的每一个。并为每个股票代码运行程序。
答案 0 :(得分:2)
如果我理解正确,您应该从CSV文件而不是用户输入中读取数据。
我假设您有一个简单的CSV文件,如下所示[named:a.csv];
company,ticker
CBRE Group,CBG
Advanced Micro Devices,AMD
The Boeing Company, BA
Eli Lilly and Company, LLY
Xerox Corporation, XRX
要从文件中收到每个自动收报机,您需要以下代码。
import csv
with open('a.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['ticker'].strip())
脚本的结果
>>> CBG
>>> AMD
>>> BA
>>> LLY
>>> XRX
由于我们可以从文件接收数据,因此这是脚本的最终版本:
import csv
with open('a.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
ticker = row['ticker'].strip()
URLyahooSum = "https://finance.yahoo.com/quote/"+ticker+"?p="+ticker
print(URLyahooSum)
这会给你以下输出:
>>> https://finance.yahoo.com/quote/CBG?p=CBG
>>> https://finance.yahoo.com/quote/AMD?p=AMD
>>> https://finance.yahoo.com/quote/BA?p=BA
>>> https://finance.yahoo.com/quote/LLY?p=LLY
>>> https://finance.yahoo.com/quote/XRX?p=XRX
答案 1 :(得分:1)
如果您在列表tickers_list
中有代码,则可以执行
for ticker in tickers_list:
print("https://finance.yahoo.com/quote/"+ticker+"?p="+ticker)
对于每个循环称为a,ticker
变量将在整个循环的迭代中获取列表中每个项的值。
因此,如果tickers_list = ['ABC', 'BBC', 'CBC']
,这会使ticker
的值为' ABC'第一次迭代,然后' BBC'第二,和CBC'第三个。
这可能对你有用我认为你可能有一个函数需要一个已经准备好使用的字符串:
base_string = "https://finance.yahoo.com/quote/%s?p=%s"
for ticker in tickers_list:
current_url = base_string % (ticker,ticker)
my_function(current_url)
这称为字符串格式,在字符串中有占位符,稍后填写。 %s
中的每个base_string
都需要一个变量来填充它,这就是为什么在current_url
百分号后面跟着两个ticker
。< / p>