Python 爬取东方财富网个股资金流历史数据并保存为 CSV 文件
-- coding: utf-8 --
import pandas as pd
import requests
import csv
import re
from requests_html import HTMLSession
from bs4 import BeautifulSoup
'
# 爬取东方财富网个股资金流历史数据
'
rawcode = '600651'
def gen_eastmoney_code(rawcode: str) -> str:
if rawcode[0] != '6':
return f'0.{rawcode}'
return f'1.{rawcode}'
def save_to_csv(df, filename):
'
将数据保存为csv文件
Parameters
----------
df : DataFrame,待保存的数据
filename : str,保存文件名
'
try:
df.to_csv(filename, index=False, encoding='utf-8-sig') # 解决中文乱码问题
print(f'数据已保存至{filename}文件!')
except Exception as e:
print(e)
print('数据保存失败!')
def main():
headers = {
'User-Agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 94.0.4606.81Safari / 537.36Edg / 94.0.992.50'
}
params = {
'cb': 'jQuery11230696442006331776_1634611526503',
'lmt': '0',
'klt': '101',
'fields1': 'f1,f2,f3,f7',
'fields2': 'f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65',
'ut': 'b2884a393a59ad64002292a3e90d46a5',
'secid': gen_eastmoney_code(rawcode),
'_': '1634611526504'
}
response = requests.get('http://push2his.eastmoney.com/api/qt/stock/fflow/daykline/get', headers=headers,
params=params)
# print(response.text)
kliness = re.findall(''klines':(.*),', response.text)
# kliness1=kliness[0].split(''')
kliness1 = ','.join(kliness)
kliness2 = kliness1.strip('[')
kliness3 = kliness2.split(''')
# print(kliness3)
# 数据插入
all_df = pd.DataFrame()
for i in range(-len(kliness3), -1):
if len(kliness3[i]) >= 2:
data = kliness3[-i].split(',')
print(data)
'
把data转换为dataframe以便存档
'
df = pd.DataFrame(data).T
# df = df.T
print(df)
df.columns = ['日期', '主力净流入净额', '小单净流入净额', '中单净流入净额', '大单净流入净额', '超大单净流入净额', '主力净流入净占比',
'小单净流入净占比', '中单净流入净占比', '大单净流入净占比', '超大单净流入净占比', '收盘价', '涨跌幅', '未知']
all_df = pd.concat([all_df, df], axis=0)
save_to_csv(df, 'F:/stocks_test/资金流/' + str(rawcode) + '.csv')
save_to_csv(all_df, 'F:/stocks_test/资金流/' + str(rawcode) + '_all.csv')
print('爬取成功!')
if name == 'main':
main()
原文地址: http://www.cveoy.top/t/topic/n0mE 著作权归作者所有。请勿转载和采集!