windows-desktop: C端基线(Windows 本地实时分析器 + 采集器 bug 修复)
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""A股新闻采集 - AkShare stock_news_em"""
|
||||
import warnings, logging, sqlite3
|
||||
from datetime import datetime
|
||||
import pandas as pd
|
||||
import akshare as ak
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
DB = r'C:\Users\lookt\a_stock_timeline\data\a_stock.db'
|
||||
|
||||
def fetch_news():
|
||||
df = ak.stock_news_em(symbol='A股')
|
||||
log.info(f'获取到 {len(df)} 行,列: {df.columns.tolist()}')
|
||||
# 列名标准化
|
||||
cn_map = {
|
||||
'关键词': 'keywords',
|
||||
'股票代码': 'ts_code',
|
||||
'新闻标题': 'title',
|
||||
'新闻内容': 'content',
|
||||
'发布时间': 'pub_date',
|
||||
'文章来源': 'source',
|
||||
'新闻链接': 'url',
|
||||
}
|
||||
df = df.rename(columns=cn_map)
|
||||
# 只保留表里有的列
|
||||
db_cols = ['title', 'content', 'pub_date', 'source', 'url', 'keywords']
|
||||
for c in db_cols:
|
||||
if c not in df.columns:
|
||||
df[c] = ''
|
||||
df = df[['id'] + [c for c in db_cols if c in df.columns]] if 'id' in df.columns else df[db_cols]
|
||||
df['inserted_at'] = datetime.now().isoformat()
|
||||
if 'id' not in df.columns:
|
||||
df.insert(0, 'id', range(1, len(df) + 1))
|
||||
conn = sqlite3.connect(DB)
|
||||
df.to_sql('news_cn', conn, if_exists='replace', index=False)
|
||||
conn.close()
|
||||
log.info(f'写入 news_cn: {len(df)} 行')
|
||||
return df
|
||||
|
||||
if __name__ == '__main__':
|
||||
fetch_news()
|
||||
Reference in New Issue
Block a user