我想使用.csv文件中的符号列表下载所有历史股票价格。问题是我想从它下载的网站是一个混淆的javascript网站,我无法获得直接下载链接:http://www.nasdaq.com/symbol/aapl/historical(底部的下载链接)。对于每个页面,我都必须选择10年选项。
是否有自动获取所有直接下载链接的方法 尽管混淆了?
让我们说是否可以自动化下载任务 Selenium认为每次我都有这个下载提示 下载什么?我也必须重命名文件,因为 默认名称与symbole(HistoricalQuotes.csv)无关,我该怎么办?
还有其他想法吗?
答案 0 :(得分:0)
如果接受了python解决方案,我会做一个快速的脚本:
import requests
from bs4 import BeautifulSoup
s = requests.session()
quote = "AAPL"
period = "10y"
def get_csrf():
url = "http://www.nasdaq.com/symbol/{}/historical".format(quote.lower())
req = s.get(url)
bs = BeautifulSoup(req.text)
data = {
"__VIEWSTATE": bs.find("input", {"name": "__VIEWSTATE"}).attrs['value'],
"__VIEWSTATEGENERATOR": bs.find("input", {"name": "__VIEWSTATEGENERATOR"}).attrs['value'],
"__EVENTVALIDATION": bs.find("input", {"name": "__EVENTVALIDATION"}).attrs['value'],
"__VIEWSTATEENCRYPTED": ""
}
return data
url = "http://www.nasdaq.com/symbol/{}/historical".format(quote.lower())
data = get_csrf()
data['ctl00$quotes_content_left$submitString'] = "{}|true|{}".format(period, quote)
req = s.post(url, data=data)
csv_data = req.text
print(csv_data)
您可以将报价变量更改为您想要的任何报价。 csv_data变量包含csv文件的数据。您可以将其保存到文件中或立即使用它。
该脚本需要两个库,请求和beautifulsoup。它适用于Python 2和Python 3。