我在用 Futu 的API 抓取实时数据,然後存放到csv file
但我面对两个问题
- Output 没有像 API 例子
我的Output 最後是这样
例子
- 新的数据不停覆写了旧的,
但我想按时间 Interval,
每个新Data 进来可以自动开个新的Row 去存放Data
- 有乱码问题
我在用 Futu 的API 抓取实时数据,然後存放到csv file
但我面对两个问题
例子
引自免费微信小程序:皆我百晓生
针对您遇到的问题,我将逐一提供解决方案。
问题1:输出格式不符合预期
首先,我们需要修改您的代码,使其按照API示例中的格式输出。为了实现这个目标,我们可以使用pandas库来处理数据并将其写入CSV文件。以下是修复后的代码:
import pandas as pd
from futu import *
# 初始化连接
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
# 订阅实时数据
ret_sub, err_message = quote_ctx.subscribe(['HK.00700'], [SubType.RT_DATA], subscribe_push=False)
if ret_sub == RET_OK:
while True:
# 获取一次分时数据
ret, data = quote_ctx.get_rt_data('HK.00700')
if ret == RET_OK:
# 解析数据并转换为DataFrame
df = pd.DataFrame(data, columns=['code', 'name', 'time', 'is_blank', 'opened_mins', 'cur_price', 'last_close', 'avg_price', 'volume', 'turnover'])
# 如果DataFrame为空,则创建一个新的DataFrame
if df.empty:
df = pd.DataFrame(columns=['code', 'name', 'time', 'is_blank', 'opened_mins', 'cur_price', 'last_close', 'avg_price', 'volume', 'turnover'])
# 将新数据追加到现有DataFrame中
df = df.append(df, ignore_index=True)
# 将DataFrame写入CSV,每次写入前删除已有内容(防止重复)
with open('output.csv', 'w', newline='') as f:
df.to_csv(f, index=False)
# 暂停一段时间,避免过于频繁地请求数据(根据实际情况调整此延迟)
time.sleep(1)
else:
print('Error:', data)
else:
print("Subscription failed", err_message)
quote_ctx.close()
问题2:解决乱码问题
在Python中,确保正确编码至关重要。您可以尝试在读取和写入文件时指定正确的字符集。在上述代码中,我们已经使用了with open('output.csv', 'w', newline='', encoding='utf-8') as f:
来指定UTF-8编码。
注意: 这里假设您的原始数据已经是UTF-8编码的。如果不是,请先进行适当的转换。同时,确保您的环境也支持UTF-8编码,比如在Windows系统中,可能需要设置合适的终端编码。
以上代码应该能解决您的问题。如果您还有其他疑问或遇到其他问题,请随时告诉我。