首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Python技术】抓取同花顺财务数据

【Python技术】抓取同花顺财务数据

作者头像
子晓聊技术
发布2026-04-23 13:18:32
发布2026-04-23 13:18:32
990
举报
文章被收录于专栏:子晓AI量化子晓AI量化

背景:星球同学和我说怎么抓取同花顺的财务数据, 我当时一想akshare不是有业绩这玩意么, 后来看了下 那是抓取东方财富的。 同花顺的方法其实可以仿照akshare自己封装一个方法就好了。

现在4月份了,一年一度的业绩快报在披露了,另外25年的一季度业绩预告也在披露。 我们在炒股的时候一定要注意业绩雷。

如果碰到东方集团、汇金科技等这种财务造假、业绩暴雷, 想哭都没地方去。

我们要善于利用股票F10进行投资分析, 实在不会分析。 像DeepSeek这样的AI工具总会吧,把这些信息提供给AI,让AI分析下财务状况也可以。毕竟有了AI, 基本面财务分析是不是变得非常简单了。

题外话:

相比业绩雷, 特朗普发起的MY战更是黑天鹅, 看着架势会越演越烈。 昨天晚上看着纳斯达克一度涨了4个多点,一觉醒来, 纳斯达克跌了2个多点。虽然我没买,最高一来一去就6个点财富就这样蒸发了。 昨天晚上睡前还在想,我今天是要抄底还是谨慎呢, 看这样的态势发展, 还是谨慎一点,君子不立危墙之下。 我赶紧看了看2008年 和2018年的K线图,趁着间隙,要不看看毛爷爷的毛选《论持久战》。

有些时候,发觉自己就没有发财命。 4.3的时候,就发现了 养殖 、 国内消费、稀土等的投资机会, 为了防止清明节假期突发幺蛾子, 还是没敢买看着涨起来的养殖,如果当时买了40个点有了吧。 还是赚不到认知外的钱。

代码语言:javascript
复制
from io import StringIO

import pandas as pd
import requests
from bs4 import BeautifulSoup
import py_mini_racer
from akshare.utils.tqdm import get_tqdm

from akshare.datasets import get_ths_js

# Setting up pandas display options
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('display.max_colwidth', 100)

def _get_file_content_ths(file: str = "ths.js") -> str:
    """
    获取 JS 文件的内容
    :param file:  JS 文件名
    :type file: str
    :return: 文件内容
    :rtype: str
    """
    setting_file_path = get_ths_js(file)
    with open(setting_file_path, encoding="utf-8") as f:
        file_data = f.read()
    return file_data


def getYeji(symbol: str = "业绩快报", type: str = "2024-12-31"):
    js_code = py_mini_racer.MiniRacer()
    js_content = _get_file_content_ths("ths.js")
    js_code.eval(js_content)
    v_code = js_code.call("v")
    headers = {
        "Accept": "text/html, */*; q=0.01",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
        "Cache-Control": "no-cache",
        "Connection": "keep-alive",
        "hexin-v": v_code,
        "Host": "data.10jqka.com.cn",
        "Pragma": "no-cache",
        "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/90.0.4430.85 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest",
    }
    url = "http://data.10jqka.com.cn/funds/ggzjl/field/code/order/desc/ajax/1/free/1/"
    r = requests.get(url, headers=headers)
    soup = BeautifulSoup(r.text, features="lxml")
    raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
    page_num = raw_page.split("/")[1]
    if symbol == "业绩预告":
        url = "https://data.10jqka.com.cn/ajax/yjyg/date/"+type+"/board/YJYZ/field/enddate/ajax/1/free/1/"
    if symbol == "业绩快报":
        url ="https://data.10jqka.com.cn/ajax/yjkb/date/"+type+"/board/HSAG/field/declaredate/ajax/1/free/1/"
    big_df = pd.DataFrame()
    tqdm = get_tqdm()
    for page in tqdm(range(1, int(page_num) + 1), leave=False):
        js_code = py_mini_racer.MiniRacer()
        js_content = _get_file_content_ths("ths.js")
        js_code.eval(js_content)
        v_code = js_code.call("v")
        headers = {
            "Accept": "text/html, */*; q=0.01",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
            "Cache-Control": "no-cache",
            "Connection": "keep-alive",
            "hexin-v": v_code,
            "Host": "data.10jqka.com.cn",
            "Pragma": "no-cache",
            "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/90.0.4430.85 Safari/537.36",
            "X-Requested-With": "XMLHttpRequest",
        }
        r = requests.get(url.format(page), headers=headers)
        temp_df = pd.read_html(StringIO(r.text))[0]
        big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
        return big_df


#print(getYeji("业绩预告", "2025-03-31"))
print(getYeji("业绩快报", "2024-12-31"))

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子晓聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们要善于利用股票F10进行投资分析, 实在不会分析。 像DeepSeek这样的AI工具总会吧,把这些信息提供给AI,让AI分析下财务状况也可以。毕竟有了AI, 基本面财务分析是不是变得非常简单了。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档