【问题标题】:Web scraping with Python3, and string formatting ?使用 Python3 进行 Web 抓取和字符串格式化?
【发布时间】:2017-06-02 14:57:37
【问题描述】:

此脚本旨在解析彭博财经以查找白天的英镑值,以下脚本会执行此操作,但是当它返回时您会得到:

{'dateTime': '2017-01-17T22:00:00Z', 'value': 1.6406}

我不想要 dateTime 或那里的值文本。我不知道如何摆脱它。当我尝试时,它会给我这样的错误:列表索引超出范围。

任何答案将不胜感激。这是脚本(在python3中):

import urllib.request
import json 

htmltext = urllib.request.urlopen('https://www.bloomberg.com/markets/api/bulk-       time-series/price/GBPAUD%3ACUR?timeFrame=1_DAY').read().decode('utf8')  

data = json.loads(htmltext)  

datapoints = data[1]['price'] 

print(datapoints)  

【问题讨论】:

  • 首先,您提供的示例数据不包含price,因此应该会抛出异常。同样dict 对象不可索引,这意味着你不能做[1]。试试看,print(data['value'])。基本上 JSON 数据与 python 调用的 dictionaries 几乎相同 - 而且它们不可索引,它们是通过键值访问的,在上面的示例中是 'dateTime''value'

标签: python json google-chrome currency


【解决方案1】:

这应该适合你。

print (data[0]['price'][-1]['value'])

编辑:要获取所有值,

for data_row in data[0]['price']:
    print data_row['value']   

解释data[0] 获取列表的第一个也是唯一的元素,它是一个字典。
['price'] 获取价格键对应的列表。
[-1] 获取列表的最后一个元素,这可能是您要查找的数据,因为它是最新的数据点。
最后,['value'] 从我们之前获得的 dict 中获取货币转换的值。

【讨论】:

  • 如何获得所有元素?
  • 当我尝试使用 dateTime 值时,我收到一条错误消息,显示为“TypeError: 'float' object is not subscriptable”。这是什么意思?你能帮我吗?
猜你喜欢
  • 2017-05-10
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多