-- 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()

Python 爬取东方财富网个股资金流历史数据并保存为 CSV 文件

原文地址: http://www.cveoy.top/t/topic/n0mE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录