首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载共享提供"JSONDecodeError: Expecting :第1列(char 0)“

下载共享提供"JSONDecodeError: Expecting :第1列(char 0)“
EN

Stack Overflow用户
提问于 2022-11-26 21:01:08
回答 1查看 43关注 0票数 0

我正在下载从财经雅虎分享。有一个错误提示:

代码语言:javascript
复制
JSONDecodeError: Expecting value: line 1 column 1 (char 0)

--我已经检查了所有类似的问题,但都是徒劳的,这就是为什么我再次问这个问题的原因。

我正在下载纳斯达克前100强股票的股票细节使用这种回购,这基本上是预测股票的股票基础上的财务分析。现在是下载共享并将其保存为Pandas DataFrame的阶段。守则是:

代码语言:javascript
复制
shares = []
tickers_done = []
for ticker in tqdm(tickers):
    if ticker in tickers_done:
        continue
    d = requests.get(f"https://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/{ticker}?symbol={ticker}&padTimeSeries=true&type=annualPreferredSharesNumber,annualOrdinarySharesNumber&merge=false&period1=0&period2=2013490868")
    if not d.ok:
      time.sleep(300)
      d = requests.get(f"https://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/{ticker}?symbol={ticker}&padTimeSeries=true&type=annualPreferredSharesNumber,annualOrdinarySharesNumber&merge=false&period1=0&period2=2013490868")
    ctn = d.json()['timeseries']['result']
    dct = dict()
    for n in ctn:
        type = n['meta']['type'][0]
        dct[type] = dict()
        if type in n:
            for o in n[type]:
                if o is not None:
                    dct[type][o['asOfDate']] = o['reportedValue']['raw']
    df = pd.DataFrame.from_dict(dct)
    df['symbol'] = ticker
    shares.append(df)
    tickers_done.append(ticker)
    time.sleep(1)
# save dataframe
df = pd.concat(shares)
df['date'] = df.index
df.to_csv(f"data/{project}/shares.csv", index=False)

错误屏幕截图是:

我检查了每一个代码请求( status_code )如下:

代码语言:javascript
复制
for x in tickers:

D= requests.get(f"https://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/{x}?symbol={x}&padTimeSeries=true&type=annualPreferredSharesNumber,annualOrdinarySharesNumber&merge=false&period1=0&period2=2013490868")

代码语言:javascript
复制
print(d.status_code)

结果均为4 0 3。你的好意将是非常感谢的。谢谢!

但是搜索铬中的链接https://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/AAPL?symbol=AAPL&padTimeSeries=true&type=annualPreferredSharesNumber,annualOrdinarySharesNumber&merge=false&period1=0&period2=2013490868,通过放置一个代码,比如,AAPL,它提供了一些数据,比如,

EN

回答 1

Stack Overflow用户

发布于 2022-11-26 21:20:02

误差

根据错误跟踪,下面一行将抛出一个错误:

ctn = d.json()'timeseries‘

该错误试图告诉您,d中的数据不是JSON格式的:

JSONDecodeError:期望值:第1列(char 0),所以基本上第一个字符(第1行,第1列)不是启动JSON的预期{

在上面的行之前添加一个print/断点,并亲自查看d中的数据(以及它是否包含有效的JSON)。

致因

正如你最后指出的那样:

结果均为403。你的好意将是非常感谢的。谢谢!

由于服务器正在拒绝requests.get调用,因此响应不包含有效的JSON。找出服务器拒绝调用的原因(403建议您使用无法访问所请求的资源);从返回任何数据的最基本调用开始,然后添加位,直到得到工作查询或错误为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74585557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档