基金网站数据入库

用Go语言爬取基金数据(使用MySQL存储) 最近看到了一个Python爬取基金的实现,就心血来潮用Go语言实现了一个类似的版本: https://github.com/liu-jianhao/crawl_funds 0. 准备工作 选爬取的网站: https://danjuanfunds.com/funding/005827?channel=1300100141 用Go语言的http包调用一下 resp, err := http.Get(url) 可以看到返回一个大JSON,然后挑选出里面我们需要的数据 1. 爬取数据 先读取fund 阅读详情

1、前面我们已经学过了python和mysql交互,把基金网站的数据插入数据库中。
http://blog.youkuaiyun.com/github_26672553/article/details/78530019
并且我们是学习了一个ORM框架sqlalchemy:
http://blog.youkuaiyun.com/github_26672553/article/details/78537605

根据sqlalchemy的需要,我们需要创建一个实体类来关联数据表(相当于一种映射关系)。
我们先看看建表SQL:

CREATE TABLE `fund` (
  `code` varchar(50) NOT NULL DEFAULT '' COMMENT '基金编码',
  `name` varchar(255) DEFAULT NULL COMMENT '基因名称',
  `NAV` decimal(5,4) DEFAULT NULL COMMENT '单位净值',
  `ACCNAV` decimal(5,4) DEFAULT NULL COMMENT '累计净值',
  `updated_at` datetime DEFAULT NULL,
  `fdate` datetime NOT NULL COMMENT '基金日期',
  `DGR` varchar(20) DEFAULT NULL COMMENT '日增长率',
  `DGV` varchar(20) DEFAULT NULL COMMENT '日增长值',
  `fee` varchar(20) DEFAULT NULL COMMENT '基金手续费',
  PRIMARY KEY (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='基金表';

然后创建fund这个数据表的实体类FundMapper.py:

# coding: utf-8
from sqlalchemy import Column, DateTime, Numeric, String
from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()
metadata = Base.metadata


class FundMapper(Base):
    # 数据表名称
    __tablename__ = 'fund'

    code = Column(String(50), primary_key=True)
    name = Column(String(255))
    NAV = Column(Numeric(5, 4))
    ACCNAV = Column(Numeric(5, 4))
    updated_at = Column(DateTime)
    fdate = Column(DateTime)
    DGR = Column(String(20))
    DGV = Column(String(20))
    fee = Column(String(20))

    def __str__(self):
        return "基金代码:{0},基金名称:{1},单位净值:{2},累计净值:{3},基金日期:{4},日增长率:{5},日增长值:{6},费率:{7}"\
                .format(self.code,self.name,self.NAV,self.ACCNAV,self.fdate,self.DGR,self.DGV,self.fee)

2、前面我们已经完成了把基金网站html抓取到本地项目的htmls目录中,最后保存的是.txt文件。
http://blog.youkuaiyun.com/github_26672553/article/details/78602604
因为我们已经修改了表结构,我们来看看现在获取基金数据的代码:

from bs4 import  BeautifulSoup
from datetime import datetime

# 读取保存在htmls目录下的txt文件数据

# 此函数是处理特殊文字
def getText(ele):
    if ele != None:
        txt = ele.get_text()
        if str(txt).strip() == "---":
            txt = 0
        return txt
    return ""


def getFundDataByHtml(html):
    soup = BeautifulSoup(html,"html.parser")
    fund_codes = soup.find("table", id="oTable").tbody.find_all("td", "bzdm")  # 基金编码 集合
    fdate = soup.find("table", id="oTable").thead.find("td",colspan='2').get_text() #基金日期

    result = []
    for code in fund_codes:
        #print(code)
        result.append({"code":code.get_text()
                     ,"name":code.next_sibling.find("a").get_text()
                     ,"NAV":getText(code.next_sibling.next_sibling)
                     ,"ACCNAV":getText(code.next_sibling.next_sibling.next_sibling)
                     ,"DGV":code.parent.find("td","rzzz").get_text()  # 日增长值
                     ,"DGR":code.parent.find("td","rzzl").get_text() # 日增长率
                     ,"fee":getText(code.parent.find("div","rate_f")) # 费率,注意这里不要定位到A元素,有的基金没有这个div,所以要做判断
                     ,"updated_at":datetime.now().isoformat(sep=' ',timespec="seconds")
                     ,"fdate":fdate}
                      )
    return  result

分析html内容要用BeautifulSoup这个包。

3、最后就是把读取到的数据 写入到mysql数据库

from sqlalchemy import  create_engine,desc,text
from common.config import dbUrl
from sqlalchemy.orm import sessionmaker
import os
from mappers.FundMapper import FundMapper

# 连接数据库
engine = create_engine(dbUrl, echo=True)  


# 保存到数据库
def saveToDB():
    # 从本地htmls目录中读取
    data_dir = "../htmls" # 这里根据你
    file_path = os.listdir(data_dir)

    mySession = sessionmaker(engine)() # 管理数据库的对象
    data_list = []
    for p in file_path:
        if os.path.isfile(os.path.join(data_dir,p)):
            #print(p)
            with open(os.path.join(data_dir,p),"rb") as f:
                html = f.read().decode("utf-8")
                f.close()
            result_set = getFundDataByHtml(html)  #从html取出需要的基金数据

            for res in  result_set:
                fund = FundMapper(**res) # ORM实体类对象
                data_list.append(fund)

    # 最后才批量插入
    mySession.add_all(data_list)
    mySession.commit()
    mySession.close()

执行saveToDB函数就可以了:

saveToDB()

这里写图片描述

Python爬虫实战:自动化抓取天天基金网数据构建投资分析数据库 网络爬虫作为数据采集的核心技术,通过模拟浏览器行为自动获取网页信息,其原理在于解析HTML/JSON数据结构并提取目标字段。这项技术对于金融数据分析、市场研究等领域具有重要价值,能够将散落于各平台的非结构化数据转化为可量化分析的资源。在投资分析场景中,Python凭借requests、BeautifulSoup和pandas等库成为实现自动化数据采集的主流工具。本文聚焦于天天基金网这一权威数据源,详细解析如何通过分析异步接口与页面结构,构建稳定高效的基金净值、持仓等多维度数据采集管道,并深入探讨反爬应对策略 阅读详情

相关推荐

国家社科基金数据爬取与可视化分析:Python实战指南

在科研数据获取场景中,通过网络爬虫技术从公开数据库批量采集结构化数据,是替代手工整理的高效手段。其原理在于模拟浏览器请求,解析接口返回的JSON或HTML,再通过数据清洗将字段标准化。掌握这一技术链,能够大幅提升科研管理、选题调研与机构竞争力分析的效率。当面对以国家社科基金为代表的公开查询平台时,官方系统仅支持逐条查看,无法导出;基于requests与parsel等轻量级Python库,即可实现分页抓取,并借助pandas完成去重、字段映射,最终以pyecharts生成交互式图表,直观展示学科分布与年度趋势

weixin_29057163的博客 196

SQL中辖区基金数量排序

26个辖区+5个省份按照特殊规则排序

大数据智工厂 166

国家社科基金数据库爬取与可视化分析全流程实战

在科研管理和大数据背景下,如何高效获取并分析公开的科研项目数据,已成为高校科研管理人员、社科研究者及数据爱好者的普遍诉求。国家社科基金数据库作为典型的动态加载平台,其查询接口通过JSON返回结构化数据,这为接口逆向提供了可能。借助浏览器开发者工具分析网络请求,构造符合规范的POST请求,配合requests库完成数据采集,再使用pandas进行字段清洗与去重,以SQLite实现本地持久化,最后通过PyECharts生成交互式可视化图表,即可打通从数据抓取到分析展示的完整链路。该方案不仅适用于社科基金数据,对

weixin_33624741的博客 338

基金管理系统中,在数据库sql server中,利用case when then 配合sum,isnull等语句,从变化记录表中求出阶段区间收益,归纳总结

--启示:现实实际中,很多项目都有这种表,比如消费支出表,记录一种变化的量,求出阶段累计的量 第一个问题--客户要求出某个客户阶段区间每只基金的收益, --备注:一张主表是记录客户不同时间,各种买入卖出操作详情表,记录的是变化的份额,赎回,分红, --思路:第一步:先求出起始日期点之前的累计份额,根据select sum(case when then) 计算复杂的合并操作 ...

xu2034029667的博客 828

基金列表所有场外基金数据

所有场外基金数据 ts_code name management custodian fund_type found_date due_date list_date issue_date delist_date issue_amount m_fee c_fee duration_year p_value min_amount exp_return benchmark status invest_type type trustee purc_startdate redm_startdate market 0 009744.OF 英大现金宝B 英大基金 中国建设银行 货币市场型 20200619 0.3 0.09 1 同期七天通知存款利率(税后) L 货币型 契约型开放式 20200619 20200619 O

funds_data:抓取网上的基金数据,将数据存储到本地的Mysql数据库中

funds_data 抓取网上的基金数据,将数据存储到本地的mysql或postgresql数据库中。 主要通过两个类:OurkuFundsInfoFetcher、FundsDataDB以及get_funds_data.py中的几个函数来实现。 get_funds_data.get_jrj_data(data_date) 从 网站上抓取基金净值数据。 函数:get_funds_data.get_ourku_data(data_date) 从 网站上抓取基金净值数据。 函数:get_funds_data.data2db_simple(conn, funds) 将抓取的净值数据写入数据库,利用DBAPI的方式操作数据库,速度较快。 函数:get_funds_data.data2db(engine, funds) 将抓取的净值数据写入数据库,利用sqlalchemy操作数据库,插入数据速度较

SQL存储股票数据

python SQLite存储股票历史数据

亦梦云烟的博客 3873

携投基金系统源码+数据库表设计文档+数据库脚本

本系统采用当前主流前端开发语言有:html,css,javascript,前端框架:jQuery, layui,采用的后端开发语言框架等有:SSM,oracle数据库-------------------------------- 本系统开发主要对象是基金公司面向基金管理者,实现管理者轻松管理基金,代替了复杂且千遍一律的运算,并且简化了基金公司的人员安排,本系统通过权限使得员工能够专一管理自己的模块,员工也可以随时修改自己的密码。

投资统计查询sql

select COUNT(*) from YYD_Users_RegInfo where regTime between '2016-07-11 00:00:00' and '2016-07-11 23:59:59' union all select COUNT(*) from YYD_Users_RegInfo where regTime between '1980-01-01' and '2...

weixin_34309435的博客 199

python多线程爬取所有基金信息写入mysql

python多线程技术爬取天天基金排行榜所有基金数据,结果并保存到excel并写入mysql数据库。基金股票量化分析利器,分分钟获取股票基金数据。

一文带你看懂SAP-HANA的基本架构与原理

创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥。

丷江南南的博客 5070

SQL 速查手册

目录1. 服务操作2. 数据库操作3.表的操作4.数据操作5.字符集编码6.数据类型(列类型)7.选择类型8.列属性(列约束)9.建表规范10.SELECT1.语法2.关键字a. selectb.FROM 子句c. WHERE 子句d. GROUP BY 子句, 分组子句e. HAVING 子句,条件子句f. ORDER BY 子句,排序子句g. LIMIT 子句,限制结果数量子句h. DISTINCT, ALL 选项11.UNION12.子查询13.连接查询(join)14.导出15.INSERT16.D

菜鸟新人 1400

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3088

python正则实战爬虫demo+数据清洗+存储到mysql数据库=你还在等什么?

文章目录项目目标:任务步骤步骤一:爬取四张数据表将网页源码保存到文件中爬取第一张表爬取第二张表爬取第三张表爬取第四张表步骤四:最终代码展示 项目目标: 笔者,我们今天的目标是什么呢? 答:如图所示的该网站一共有四张表,我们来使用python正则把这四张表里的数据爬下来,并进行数据清晰,存放到数据库中。 任务分析: 那我们该如何开始呢? 答:首先对源码全局进行分析,如下图所示,四个红色框框正是我们...

lujiangyang123的博客 3071

Shell数学计算(算术运算,加减乘除运算)

声明: 本篇博客的学习途径主要为以下网站和课堂讲解,发博客目的仅为学习使用,在该博客的基础上做了一定程序的简略和修改。 参考博客 : 原文链接:http://c.biancheng.net/shell/ Shell数学计算Shell数学计算数学计算命令对整数进行数学运算: (()) / let / $[] /exprShell (())Shell let命令bc命令:一款数学计算器在 Shell 中使用 bc 计算器 Shell数学计算 默认情况下,Shell 不会直接进行算术运算,而是把+两边的数据(数

AKUANer的博客 2万+

数字IC设计实现之hierarchical flow系列(一)

数字IC设计实现之hierarchical flow系列(一) 最近这段时间小编又比较忙起来了,今天抽空来咖啡厅码字来了,刚到时脑子一片空白,不知道要分享些什么(项目结束后将会在知识星球上分享数字 IC 设计实现 Tapeout 前要review的那些 checklist)。突然间想起来有个星友希望小编分享些数字 IC 设计实现 hierarchical flow 的相关内容。考虑到现在大都采用这种方式来做 design 和实现,那就选这个 topic 了。限于篇幅和时间限制,今天只分享逻辑综合部分和布局布

weixin_37584728的博客 5998

国内场外基金数据爬取

纯粹做爬虫技术分享交流,关于各位github朋友用此仓库涉及到的技术爬取数据的用处,本人不负任何责任,请各位朋友自行判断.PS: 大家感兴趣可转债数据的话欢迎跳到├── .env #本地环境配置参数├── .env.example #环境配置参数模板实例└── src├── acquire_fund_base.py # 爬取基金基础数据-- 一些不变动的数据,例如成立时间。

qq_43021499的博客 280

RealSense D455启动教程

RealSense D455启动教程 修改rs_camera.launch

每天进步一点点 2416

python基金预测分析_Python爬虫抓取基金数据分析、预测系统设计与实现

版权声明:本文为博主原创文章,如果转载请给出原文链接:http://doofuu.com/article/4156231.html目前在开发一款基于Python的基金爬取、分析、预测系统,目前已经开发到90%了。借助周末有时间,记录下开发过程中遇到的坑和自己的项目总结。这篇文章主要介绍了Python抓取某只基金历史净值数据案例,结合具体实例形式分析了Python基于BeautifulSoup库的数...

weixin_39784774的博客 1232

基于IC617下Layout XL的使用

基于IC617下Layout XL的使用

weixin_43816759的博客 1万+

VI4302 1D dToF Sensor助力无人机定高避障:一场前所未有的飞行体验

另外,传感器因测量精度不够,产生的高度信息误差,会导致无人机无法精确定高,影响飞行稳定性和安全降落。芯视界于2022年发布的全新一代基于单光子探测技术的dToF激光雷达传感器芯片-VI4302,采用单电源低功耗系统,实现高性能测距、高稳定性,同时具备极强抗阳光能力以及兼容性等强大优势。无人机可以根据传感器提供的信息,快速调整飞行路径,避开潜在的障碍物,确保平稳的飞行。VI4302 1D dToF Sensor能够以极高的精度测量物体与无人机之间的距离,实现毫米级别的测量精度。⭐ 体型小巧,灵敏度高。

致力于lidar应用开发 621

关于我爬了厦大某网站这档事

起因 2019年,大三的我在上《面向对象编程》这门课时,曾用Java爬取了厦门大学教育发展基金公开的捐赠名单。2021年厦大百年校庆,作为在厦大读了6年,马上第7年的我非常高兴能够见证这一历史时刻!本着好奇害死猫的原则,我想用Python再爬一次,看看百年校庆下捐赠名单有何不同,顺便温习Python,MySQL、Tableau的使用。 在此说明:由于网站服务器访问数量的限制,所爬取的近6万条记录中有200多条是作废的,因此接下来我所分析得到的数据仅仅是作为参考,并不准确,且本着为母校信息保护的原则,以下内容

qq_49134563的博客 1044

Error: Flash Download failed - Target DLL has been cancelled

由于换了新电脑,keil重装了下,然而之前的MCU的支持包没有安装,以及一些其他的问题,导致可以编译但是不能将程序烧录到单片机中。现整理一下解决思路: 1、将支持包下载并添加: 找到你需要用的MCU的具体型号: 例如: 点击网址,下载安装包,或者在csdn等其他网址下载安装包,将下载好的pack包放到keil5的安装目录下的.Download中: 点击file中的import,将路径选择到.........

hanhan的博客 5万+

用python代码实现输入基金代码爬取季度报告并获取季报特定模块内容制作动态词云图

本文将介绍如何爬取网站上的pdf文件并提取文件中的指定段落计算关键词出现次数并制作动态词云图,以爬取基金季报为例。

cjiaaaa的博客 1303

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python爬虫实战:基金会公开项目数据采集与清洗入库

网络爬虫是数据采集领域的重要工具,其核心价值在于将非结构化网页内容转化为结构化数据。在实际工程中,选择合适的技术栈往往比盲目追求框架更重要。本文从Python爬虫的基础原理出发,以requests与lxml作为轻量级组合,介绍了针对公开数据源的规范化采集流程。通过一个基金会公开项目公示页面的完整实战,覆盖了请求封装、XPath解析、数据清洗、指纹去重、SQLite入库以及并发控制与断点续爬等关键环节。这种低对抗、高结构化的数据源非常适合作为爬虫练手项目,既能掌握爬虫开发的完整链路,又能规避合规风险。无论后续

weixin_32821533的博客 231

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python爬虫实战:requests+BeautifulSoup采集基金会公开项目数据全流程

在数据采集领域,Python爬虫因其简洁高效而成为入门与实战的首选工具。面对公开但分散的网页数据,如何从零构建一套稳定、合规的采集方案?文章从爬虫基础概念出发,讲解requests与BeautifulSoup两大核心库的工作原理,并强调数据清洗与结构化输出的重要性。通过真实案例,展示如何将基金会公示的零散项目信息转化为可供分析的表格数据,涵盖列表页解析、详情页字段提取、请求频率控制、断点续采及增量更新等工程化细节。无论你是研究公益资金流向的分析师,还是想掌握爬虫落地的开发者,都能从中获得可复用的方法论。本文

weixin_29758911的博客 185

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 多进程方式抓取基金网站内容
下一篇: 入手pandas分析统计
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值