当前位置: 首页 > news >正文

【爬虫】爬取A股数据写入数据库(一)

在这里插入图片描述

1. 对东方财富官网的分析

步骤:

  1. 通过刷新网页,点击等操作,我们发现https://datacenter-web.eastmoney.com/api/data/v1/get?请求后面带着一些参数即可以获取到相应数据。
  2. 我们使用python来模拟这个请求即可。
    我们以如下选择的页面为切入点,以此获取当前所有A股的一些基本数据。
    [图片]

通过F12调出浏览器调试框,对该网站的数据拉取协议为参考,然后通过python模拟此类请求,进行获取数据,如下图所示:
[图片]

[图片]

[图片]

主要代码如下:

import pandas as pd
from typing import List
import requests, jsonclass CustomedSession(requests.Session):def request(self, *args, **kwargs):kwargs.setdefault('timeout', 60)return super(CustomedSession, self).request(*args, **kwargs)MAX_CONNECTIONS = 50
session = CustomedSession()
adapter = requests.adapters.HTTPAdapter(pool_connections = MAX_CONNECTIONS,pool_maxsize = MAX_CONNECTIONS,max_retries = 5)
session.mount('http://', adapter)
session.mount('https://', adapter)# 请求地址
QEURY_URL = 'http://datacenter-web.eastmoney.com/api/data/v1/get'# HTTP 请求头
EASTMONEY_REQUEST_HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko','Accept': '*/*','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',# 'Referer': 'http://quote.eastmoney.com/center/gridlist.html',
}# 请求返回值过滤
RESULT_FIELDS = {'SECURITY_CODE': '股票代码','SECURITY_NAME_ABBR': '股票名称','END_DATE': '本次股东户数统计截止日','PRE_END_DATE': '上次股东户数统计截止日','INTERVAL_CHRATE': '区间涨跌幅','AVG_MARKET_CAP': '户均持股市值','AVG_HOLD_NUM': '户均持股数量','TOTAL_MARKET_CAP': '总市值','TOTAL_A_SHARES': '总股本','HOLD_NOTICE_DATE': '公告日期','HOLDER_NUM': '本次股东户数','PRE_HOLDER_NUM': '上次股东户数','HOLDER_NUM_CHANGE': '股东户数增减','HOLDER_NUM_RATIO': '股东户数较上期变化百分比',  'f2': '最新价','f3': '涨跌幅百分比',
}# 请求页码
QEURY_PAGE = 1
# 请求参数
QUERY_PARAM = [('sortColumns', 'HOLD_NOTICE_DATE,SECURITY_CODE'),('sortTypes', '-1,-1'),('pageSize', 500),('pageNumber', QEURY_PAGE),('columns', 'SECURITY_CODE,SECURITY_NAME_ABBR,END_DATE,INTERVAL_CHRATE,AVG_MARKET_CAP,AVG_HOLD_NUM,TOTAL_MARKET_CAP,TOTAL_A_SHARES,HOLD_NOTICE_DATE,HOLDER_NUM,PRE_HOLDER_NUM,HOLDER_NUM_CHANGE,HOLDER_NUM_RATIO,END_DATE,PRE_END_DATE',),('quoteColumns', 'f2,f3'),('source', 'WEB'),('client', 'WEB'),('reportName', 'RPT_HOLDERNUMLATEST'),
]"""
获取沪深A股市场最新公开的股东数目变化情况: 当作获取所有股票
ParametersNoneReturnsDataFrame
"""
def get_latest_holder_number() -> pd.DataFrame:global QEURY_PAGEQEURY_PAGE = 1PAGE_COUNT = 100dfs: List[pd.DataFrame] = []while 1:if QEURY_PAGE > PAGE_COUNT:breakparams = tuple(QUERY_PARAM)response = session.get(QEURY_URL, headers=EASTMONEY_REQUEST_HEADERS, params=params)resultJson = response.json()PAGE_COUNT = resultJson.get('result').get('pages')if PAGE_COUNT is None:breakdata = resultJson.get('result').get('data')if data is None:breakdf = pd.DataFrame(data)df = df.rename(columns=RESULT_FIELDS)[RESULT_FIELDS.values()]dfs.append(df)QEURY_PAGE += 1if len(dfs) == 0:df = pd.DataFrame(columns=RESULT_FIELDS.values())return dfdf = pd.concat(dfs, ignore_index=True)return dfif __name__ == "__main__":data = get_latest_holder_number()print(data)

调用如上函数即可:
在这里插入图片描述
更多内容:【爬虫】爬取A股数据系列

相关文章:

【爬虫】爬取A股数据写入数据库(一)

1. 对东方财富官网的分析 步骤: 通过刷新网页,点击等操作,我们发现https://datacenter-web.eastmoney.com/api/data/v1/get?请求后面带着一些参数即可以获取到相应数据。我们使用python来模拟这个请求即可。 我们以如下选择的页面为切入点…...

1-38 流资源类结构

一 简介 1. Java中所说的流资源--IO流 2.为什么学习留资源? --要操作文件中的数据 将数据写入指定的文件 将数据从指定的文件读取 3.分类 -- 四大基流 , 八大子流 (重点) 按照流向分 : 输入流 和输出流 按照操作数据资源的类型划分 字符流 (重点) Reader -- 字符…...

nginx的前世今生(二)

书接上回: 上回书说到,nginx的前世今生,这回我们继续说 3.缓冲秘籍,洪流控水 Nginx的缓冲区是其处理数据传输和提高性能的关键设计之一,主要用于暂存和管理进出的数据流,以应对不同组件间速度不匹配的问题…...

浏览器跨域详解

一、什么是跨域 浏览器跨域是指当一个Web应用程序试图访问另一个协议、主机或端口不同的资源时,所发生的情况。这主要是由于浏览器的同源策略造成的,它是为了网站的安全而设置的安全限制,防止一个网站恶意访问另一个网站的资源。当然这是比较…...

华为5700配置

恢复出厂设置,清空配置 1、更改名字 system-view sysname tp-10-50-01-04 2、配置管理接口 int vlan 1 ip add 10.50.1.4 255.255.254.0 quit 2、链路汇聚 interface eth-trunk 1 mode lacp quit 3、绑定端口 interface eth-trunk 1 trunkport gigabitethernet …...

使用Axios从前端上传文件并且下载后端返回的文件

前端代码: function uploadAndDownload(){showLoading();const fileInput document.querySelector(#uploadFile);const file fileInput.files[0];const formData new FormData()formData.append(file, file)return new Promise((resolve, reject) > {axios({…...

open 函数到底做了什么

使用设备之前我们通常都需要调用 open 函数,这个函数一般用于设备专有数据的初始化,申请相关资源及进行设备的初始化等工作,对于简单的设备而言,open 函数可以不做具体的工作,你在应用层通过系统调用 open 打开设备…...

ue引擎游戏开发笔记(32)——为游戏添加新武器装备

1.需求分析: 游戏中角色不会只有一种武器,不同武器需要不同模型,甚至可能需要角色持握武器的不同位置,因此需要添加专门的武器类,方便武器后续更新,建立一个武器类。 2.操作实现: 1.在ue5中新建…...

【个人博客搭建】(17)使用FluentValidation 参数校验

FluentValidation 是一个用于 .NET 的开源验证库,它提供了一种流畅的接口和强类型验证规则,使得验证逻辑表达得更加清晰和简洁。(Apache-2.0) FluentValidation 的主要作用包括: 提高代码可读性:通过使用 F…...

数据结构===散列表

文章目录 概要散列思想散列函数散列冲突开放寻址法装载因子 链表法 代码Java小结 概要 散列表是一种很有趣的数据结构。 散列表是一个很有用的数据结构。它是数组演练而来的,又是一个基于数组的扩展的数据结构。接下来看看。 散列思想 散列表用的是数组支持按照下…...

10G MAC层设计系列-(2)MAC RX模块

一、概述 MAC RX模块的需要进行解码、对齐、CRC校验。 因为在空闲的时候10G PCS/PMA会一直向外吐空闲符(x07)所以需要根据开始符、结束符将有效数据从码流中截取,也就是解码。 因为开始字符的所在位置有两种形式,而结束字符的位…...

解码Starknet Verifier:深入逆向工程之旅

1. 引言 Sandstorm为: 能提交独立proof给StarkWare的Ethereum Verifier,的首个开源的STARK prover。 开源代码见: https://github.com/andrewmilson/sandstorm(Rust) L2Beat 提供了以太坊上Starknet的合约架构图&…...

【C++语言】类和对象--默认成员函数 (中)

文章目录 前言类的六个默认成员函数:1. 构造函数概念特性做了什么?易错注意:显式定义和默认构造函数 2. 析构函数概念特征做了什么?注意事项: 3.拷贝构造函数概念特征做了什么?注意事项: 4.赋值运算符重载…...

前端递归常见应用

概览 在 JavaScript 中,递归是一种编程技术,指的是函数直接或间接调用自身的过程。 递归通常用于解决可以分解为相同子问题的问题。通过不断地将问题分解成更小的、相似的子问题,直到达到某种基本情况(不再需要进一步递归的简单情…...

AI工具如何改变我们的工作与生活

AI工具在当今社会中扮演着越来越重要的角色,它们已经开始改变着我们的工作方式和生活方式。在接下来的2000字篇幅中,我将详细探讨AI工具如何影响我们的工作和生活。 AI工具在工作中的影响: 自动化和智能化生产流程: AI工具可以通…...

深入了解C/C++的内存区域划分

🔥个人主页:北辰水墨 🔥专栏:C学习仓 本节我们来讲解C/C的内存区域划分,文末会附加一道题目来检验成果(有参考答案) 一、大体有哪些区域?分别存放什么变量开辟的空间? …...

C++构造函数和析构函数的调用顺序

一般情况下,调用析构函数的次序正好与调用构造函数的次序相反,也就是最先被调用的构造函数,其对应的析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。 当然对象的构造函数和析构函数调用时机和…...

智能家居1 -- 实现语音模块

项目整体框架: 监听线程4: 1. 语音监听线程:用于监听语音指令, 当有语音指令过来后, 通过消息队列的方式给消息处理线程发送指令 2. 网络监听线程:用于监听网络指令,当有网络指令过来后, 通过消息队列的方…...

Leetcode 3139. Minimum Cost to Equalize Array

Leetcode 3139. Minimum Cost to Equalize Array 1. 解题思路2. 代码实现 题目链接:3139. Minimum Cost to Equalize Array 1. 解题思路 这一题是一道hard的题目,而且看了一下答出率低的离谱,就一开始被吓到了,不过实际做了一下…...

【element-ui】el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题

el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题 需求 现在有一个需求,需要监听el-table的纵向滚动,当滚动高度达到特定值时进行一些操作。 代码如下: methods:{throttledHandleScroll() {// 如果已经有定时器…...

FastAPI分块上传存储:对象存储集成完整指南

FastAPI分块上传存储:对象存储集成完整指南 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi 想要在FastAPI应用中实现大文件…...

3分钟解锁你的音乐收藏:qmc-decoder让QQ音乐加密格式不再受限

3分钟解锁你的音乐收藏:qmc-decoder让QQ音乐加密格式不再受限 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经下载过QQ音乐的歌曲,却发现…...

RWKV7-1.5B-g1a实操手册:curl命令调用generate接口+参数组合避坑指南

RWKV7-1.5B-g1a实操手册:curl命令调用generate接口参数组合避坑指南 1. 模型简介 rwkv7-1.5B-g1a 是基于RWKV-7架构的多语言文本生成模型,特别适合以下场景: 基础问答文案续写简短总结轻量中文对话 这个1.5B参数的版本在单卡24GB显存的GPU…...

揭秘28BYJ-48步进电机的隐藏技能:用Arduino实现0.056°超高精度控制

揭秘28BYJ-48步进电机的隐藏技能:用Arduino实现0.056超高精度控制 在创客和硬件爱好者的世界里,28BYJ-48步进电机因其低廉的价格和广泛的应用而备受青睐。这款电机标称步距角为5.625,看似精度有限,但通过巧妙的驱动技术和算法优化…...

Eino:Agent的LLM抽象

拨开迷雾看本质:从零推导 ChatModelAgent(模型适配层与 Agent 运行时) 在 react.md 里看到的是 “ReAct 作为范式” 的推导;而本篇把视角切到 chatmodel.go 作为工程实现:它不只是“为了 ReAct 画图”,更是…...

Wan2.2-I2V-A14B开源大模型:支持LoRA微调与私有领域视频风格迁移

Wan2.2-I2V-A14B开源大模型:支持LoRA微调与私有领域视频风格迁移 1. 模型概述与核心能力 Wan2.2-I2V-A14B是一款开源的文生视频大模型,专为高质量视频生成任务设计。该模型在保持开源特性的同时,通过LoRA微调技术实现了对私有领域视频风格的…...

Qwen3-TTS开源镜像实操:与LangChain集成构建多语种AI Agent语音接口

Qwen3-TTS开源镜像实操:与LangChain集成构建多语种AI Agent语音接口 1. 项目概述与核心价值 Qwen3-TTS-12Hz-1.7B-VoiceDesign是一个强大的多语言文本转语音模型,专为现代AI应用场景设计。这个模型最大的特点是能够处理10种主要语言,包括中…...

跨设备滚动优化:Scroll Reverser让macOS操作效率提升80%的效率工具

跨设备滚动优化:Scroll Reverser让macOS操作效率提升80%的效率工具 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在当今多设备办公环境中,Mac用户常常面…...

手把手教学:如何在本地运行ChatGLM3-6B对话模型

手把手教学:如何在本地运行ChatGLM3-6B对话模型 1. 项目简介 你是否曾经遇到过这样的情况:想用AI助手帮忙写代码、分析文档或者只是聊聊天,但云端服务要么响应慢,要么担心隐私泄露?今天我要介绍的ChatGLM3-6B本地部署…...

Swin2SR模型可解释性:理解超分决策过程

Swin2SR模型可解释性:理解超分决策过程 1. 引言 当我们使用Swin2SR这样的超分辨率模型时,经常会惊叹于它能够将模糊的低分辨率图像转换为清晰的高分辨率图像。但你是否好奇过,这个"AI显微镜"是如何做出这些决策的?它是…...