20个版本
0.6.1 | 2022年4月5日 |
---|---|
0.5.0 | 2021年12月10日 |
0.4.2 | 2020年12月31日 |
0.4.1 | 2020年10月18日 |
0.3.0 | 2019年11月26日 |
在财经类中排名第77
在3个crate中使用了(通过finql)
60KB
1.5K SLoC
GuruFocus API
本项目提供了一套通过GuruFocus API从GuruFocus网站接收数据的函数。本项目遵循Apache 2.0或MIT许可(请参阅文件LICENSE-Apache2.0和LICENSE-MIT)。
使用方法
请注意,您至少需要高级账户才能使用此API。这里有几个示例演示了如何在您的Rust项目中使用此API。要运行此示例,您首先需要定义一个环境变量,该变量包含您从GuruFocus获得的用户Token
export GURUFOCUS_TOKEN='<your user token>'
可以通过以下命令执行示例
cargo test --example <name of example>
在这里,<示例名称>
可以是示例文件夹中任何不带.rs
扩展名的文件的名称。请注意,运行任何示例都会至少增加您的API访问计数器1次。
GuruFocus API以JSON格式提供所有数据,当前的基本API函数将仅返回这些JSON结构作为serde_json::Value
类型,而无需任何进一步处理。《code>serde_json::Value类型可以被反序列化为更有意义的数据结构,这些结构用于那些相对稳定的JSON结构(见下文)。
GuruFocus API 返回的数值有时是数字,有时是字符串。为了解决这个问题,引入了一个新的结构体 FloatOrString
,它包含一个浮点值,但可以自动从字符串或浮点数中读取。缺点是需要在特定数据结构的变量名中添加 .0
。也就是说,要访问 Quote 类型的变量中的报价,即 q: Quote
,可以通过 q.price.0
(如果可访问)来访问价格,而不是 q.price
,或者更普遍地,通过 q.price.into()
转换为 f64
。在某些情况下,字符串中包含的不是数字,而是错误消息,如“负有形权益”。在这种情况下,如果字符串不能解析为数字,则将值设置为 NAN
。
从版本 0.4 开始,所有使用 async
属性的请求都返回 Future,而不是等待响应并返回结果。要获取实际结果,需要使用 .await
或 block_on
或类似方法。示例演示了如何使用此库。
要运行通过 GuruFocus API 获取数据的单元测试,必须设置 GURUFOCUS_TOKEN
(见上文)。否则,这些单元测试将静默跳过。
股票信息仅部分解析到结构体中,一些部分解析为 JSON 值的 HashMap,例如公司详细信息。这有两个原因
- GuruFocus 经常更改接口,添加新条目或(较少)删除或重命名条目。通过使用 HashMap,接口变得更加稳定,新条目可以立即使用
- 一些结构体变得非常长。因此,似乎更好的方法是直接在 HashMap 中搜索,而不是使用硬编码的结构体成员(这些成员有时可能与 API 中的拼写略有不同)。
最终,更多的长结构体将转换为 HashMap 表示。
请注意,该库尚不稳定,用户界面仍可能更改。但是,欢迎关于可用性和改进界面的建议。
依赖项
~7–21MB
~294K SLoC