我可以格式化Quandl请求吗?

时间:2017-11-29 19:17:21

标签: python finance quandl

好的,所以我需要的只是带有基本股票数据的CVS文件,每个公司都有额外的行列。从维基百科获取行业和代码的工作正常。

但谷歌/雅虎数据不再需要工作,所以我尝试使用Quandl。我最近根据它制作了一些技术指标,所以我觉得它会很棒。但是有以下错误。

我仍然怀疑我是否可以格式化我的请求,所以我认为存在问题,但我无法想办法让它发挥作用。

感谢您的任何建议,并抱歉拼错。

from bs4 import BeautifulSoup
import requests
import pandas as pd
import lxml
import quandl as qdl

def get_ticker_and_sector(url='https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'):
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data, 'lxml')
table = soup.find('table')

sp500 = {}

for tr in table.find_all('tr')[1:]:
    tds = tr.find_all('td')
    ticker = tds[0].text
    sector = tds[3].text
    sp500[ticker] = sector
    return sp500


if __name__ == '__main__':
    sp500 = get_ticker_and_sector()
    for i, (ticker, sector) in enumerate(sp500.items()):
        stock_df = qdl.get('WIKI/%s', start_date="2010-12-11", end_date="2011-12-31")%(ticker)
        stock_df['Name'] = ticker
        stock_df['Sector'] = sector
        if i == 0:
            all_df = stock_df
        else:
            all_df = all_df.append(stock_df)
all_df.to_csv('all_sp500_data_2.csv')

错误。

Traceback (most recent call last):
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/connection.py", line 55, in parse
    return response.json()
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/requests/models.py", line 886, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tomek/PycharmProjects/untitled4/get_file.py", line 30, in <module>
    stock_df = qdl.get('WIKI/%s', start_date="2010-12-11", end_date="2011-12-31")%('ticker')
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/get.py", line 48, in get
    data = Dataset(dataset_args['code']).data(params=kwargs, handle_column_not_found=True)
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/model/dataset.py", line 47, in data
    return Data.all(**updated_options)
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/operations/list.py", line 14, in all
    r = Connection.request('get', path, **options)
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/connection.py", line 36, in request
    return cls.execute_request(http_verb, abs_url, **options)
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/connection.py", line 44, in execute_request
    cls.handle_api_error(response)
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/connection.py", line 61, in handle_api_error
    error_body = cls.parse(resp)
  File "/home/tomek/tomek-workspace/pythons/udemy/lib/python3.5/site-packages/quandl/connection.py", line 57, in parse
    raise QuandlError(http_status=response.status_code, http_body=response.text)
quandl.errors.quandl_error.QuandlError: (Status 400) Something went wrong. Please try again. If you continue to have problems, please contact us at connect@quandl.com.

1 个答案:

答案 0 :(得分:0)

回溯为您提供400状态代码,这意味着对API的请求有问题。

更具体地说,Quandl的文档说明了400状态代码:

  

我们无法识别您的API密钥。请检查您的API密钥,然后重试。您可以在帐户设置下找到自己的API密钥。

作为一个很好的起点,您是否在安装Quandl模块后输入了API密钥? Steps are here for more information on how to do it

请注意,我只看了你的其余代码,并没有完全测试它,看看是否还有其他错误!