使用Python抓取同花顺资金流数据

2023-11-14

今天我们通过一个例子来介绍python爬取数据的一般步骤,用到的工具包括python的经典模块requests和BeautifulSoup,另外结合刚学习的任务流工具TaskFlow来完成代码开发。

我们先来看一下要爬取的数据,网址是http://data.10jqka.com.cn/funds/gnzjl/,通过chrome的开发者工具分析我们可以比较容易找到后台数据加载网址为

http://data.10jqka.com.cn/funds/gnzjl/field/tradezdf/order/desc/page/{page_num}/ajax/1/free/1/

其中page_num的位置为要查询第几页的数据,在网页上看到概念一共有6页数据,所以page_num取值为1-6
在这里插入图片描述
这里有个小技巧,可以先点击图片左上角的清空按钮,把已经加载的网址先清理掉,然后在原始网页上点第二页,就能看到图片左下角新加载的网址,点开右边“Preview” 看到资金流数据相关的内容,就能确定这个网址是用来加载数据的。

在chrome浏览器中输入 http://data.10jqka.com.cn/funds/gnzjl/field/tradezdf/order/desc/page/1/ajax/1/free/1/,并打开chrome开发者工具,在网页源码中找到数据所在table标签为

<table class="m-table J-ajax-table">
	...
</table>

抓取数据的完整源码如下

import time

import requests
from bs4 import BeautifulSoup
from taskflow import engines
from taskflow.patterns import linear_flow
from taskflow.task import Task

REQUEST_HEADER = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}


class MoneyFlowDownload(Task):
    """
    下载资金流数据
    数据源地址:http://data.10jqka.com.cn/funds/gnzjl/

    """
    BASE_URl = {
        "concept": 'http://data.10jqka.com.cn/funds/gnzjl/field/tradezdf/order/desc/page/%s/ajax/1/free/1/',
    }

    def execute(self, bizdate, *args, **kwargs):

        for name, base_url in self.BASE_URl.items():
            # 爬取数据的存储路径
            dt_path = '/data/%s_%s.csv' % (bizdate, name)

            with open(dt_path, "a+") as f:
                # 记录数据文件的当前位置
                pos = f.tell()
                f.seek(0)
                lines = f.readlines()
                # 读取文件中的全部数据并将第一列存储下来作为去重依据,防止爬虫意外中断后重启程序时,重复写入相同
                crawled_list = list(map(lambda line: line.split(",")[0], lines))
                f.seek(pos)
                # 循环500次,从第一页开始爬取数据,当页面没有数据时终端退出循环
                for i in range(1, 500):
                    print("start crawl %s, %s" % (name, base_url % i))
                    web_source = requests.get(base_url % i, headers=REQUEST_HEADER)
                    soup = BeautifulSoup(web_source.content.decode("gbk"), 'lxml')
                    table = soup.select('.J-ajax-table')[0]
                    tbody = table.select('tbody tr')
                    # 当tbody为空时,则说明当前页已经没有数据了,此时终止循环
                    if len(tbody) == 0:
                        break
                    for tr in tbody:
                        fields = tr.select('td')
                        # 将每行记录第一列去掉,第一列为序号,没有存储必要
                        record = [field.text.strip() for field in fields[1:]]
                        # 如果记录还没有写入文件中,则执行写入操作,否则跳过这行写入
                        if record[0] not in crawled_list:
                            f.writelines([','.join(record) + '\n'])
                    # 同花顺网站有反爬虫的机制,爬取速度过快很可能被封
                    time.sleep(1)


if __name__ == '__main__':
    bizdate = '20200214'
    tasks = [
        MoneyFlowDownload('moneyflow data download')
    ]
    flow = linear_flow.Flow('ths data download').add(*tasks)
    e = engines.load(flow, store={'bizdate': bizdate})
    e.run()

执行程序后,在dt_path位置已经存储了概念的资金流数据,文件名为20200214_concept.csv,内容大致如下:

钛白粉,1008.88,6.29%,7.68,6.21,1.47,7,金浦钛业,10.04%,2.96
磷化工,916.833,2.42%,37.53,34.78,2.75,28,六国化工,9.97%,4.08
光刻胶,1435.68,2.40%,43.51,44.31,-0.80,20,晶瑞股份,10.01%,42.99

此时就完成了同花顺概念分类的资金流数据的爬取,之后可以每天定时启动任务抓取数据进行分析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python抓取同花顺资金流数据 的相关文章

  • python turtle代码示例-Python turtle.left方法代码示例

    本文整理汇总了Python中turtle left方法的典型用法代码示例 如果您正苦于以下问题 Python turtle left方法的具体用法 Python turtle left怎么用 Python turtle left使用的例子
  • 大屏数据可视化——屏幕适配方案(多分辨率下)

    文章目录 前言 一 一些前提概念 1 1 常见大屏分辨率 1 2 设备像素 二 适配痛点 三 关于rem 四 关于px2rem 五 适配方案 5 1 rem自适应缩放 5 2 css3缩放scale 六 demo演示 6 1 1366 76
  • vs2017统计代码行数方法

    方法一 查找所有代码行数 包括系统生成 1 打开项目 2 编辑 查找和替换 选中 在文件中查找 然后就会弹出一个查找框 输入正则表达式 b b 选择查找整个解决方案 查找选项选择使用正则表达式 然后查找全部 最后就会统计出一共有几行 方法二
  • 华为OD机试 Java查找人名

    题目 代码 import java util ArrayList import java util List public class NameMatcher public
  • 网速dns怎么调快_Switch【实用DNS分享】:有效提升网络速度!

    最近很多朋友反应 似乎又有一批DNS不太灵了 下载速度直线下降 游戏联网体验也大打折扣 根据检测以下是出问题的DNS和一批没被 污染 的DNS 测试网络环境 广东电信 100M光纤 被淘汰的DNS 如果还有使用这一批DNS的玩家请研究一下自
  • BeanUtils.copyProperties的使用方法

    BeanUtils copyProperties的使用方法 1 使用的是springframe包下的 BeanUtils copyProperties a b 把a属性拷贝给b属性 2 注意事项 使用时 例如 a和b都用page封装起来 P
  • STM32F103 内部FLASH读写擦操作

    内部flash介绍 开发步骤 1 解锁和锁定 前面我们介绍了在对 FLASH 进行写操作前必须先解锁 解锁操作也就是必 须在 FLASH KEYR 寄存器写入特定的序列 0X45670123 和 0XCDEF89AB 固件库 提供了一个解锁
  • nginx(六十七)http_ssl模块 client与nginx的ssl握手

    一 HTTPS握手机制 关注点 SSL TLS握手 的细节与nginx 配置指令 的关系 核心 讲解 客户端 下游 与作为 server 端的nginx之间的 握手 最佳实践 建议在 http块 中通过 include ssl conf 把
  • 01-pytest-安装及入门

    目录 1 安装 2 查看版本 3 创建第一个测试 4 pytest用例规则 1 安装 pip install U pytest 2 查看版本 pytest version 或 pip show pytest 3 创建第一个测试 1 新建te
  • 分享一个QTabWidget的好看样式

    void setTabWidgetStyleSheet QTabWidget obj obj gt setStyleSheet QTabWidget background color transparent QTabWidget pane
  • python rfind函数用法_纵经千万次增删改,初心永不变

    开篇 上一期介绍了字符串及其切片用法 相信你已经掌握 那么这一期 我们就来学习一下字符串的增删改查等一系列方法 正是因为有了这些方法 你才能像呼吸一样自然地操作字符串 需要指出的是 字符串是不可变类型 也就是说 只要一个字符串确定了 那么任
  • Navicat远程连接mysql数据库

    第一 首先能ping通mysql数据库所在的主机 第二 telnet mysql数据库的端口号 如果不行 要在防火墙 高级设置里面 配置入站规则 开放3306端口 第三 如果还不行 结合下面两个网址 http blog csdn net a
  • iOS进阶_Log分类打印日志自动转换中文

    description方法是NSObject类的一个实例方法 因此所有的Object C对象都有description方法 description方法返回的永远是字符串 对于一个Person类 如果没有重写description方法 NSL
  • DWR3常见错误解决方法

    1 提示 缺少对象 原因 程序中使用了dwr util setValue userInfo data 或getValues 之类的语句 而控件ID与这里的userInfo名字不匹配 则提示缺少对象 解决方法 检查每一个setValue中的控
  • 设置对象的键为一个变量

    在JS中将对象的键设为变量的方法是将对象的键用 包起来 否则会直接识别成键名 例如 var key mykey var num mynum let obj key num 上面代码创建后的对象是 key mynum 并不是我们所期望的 my
  • (CVPR2019医学影像)LesaNet配置

    目录 一 环境配置 1 下载CADLab中的LesaNet文件夹 2 roi pooling编译 3 预训练模型下载 二 数据集 三 配置参数 1 demo 2 训练 3 测试 作者原版github LesaNet 一 环境配置 1 下载C
  • 【STM32】系统时钟RCC详解(超详细,超全面)

    转载 https blog csdn net as480133937 article details 98845509 1什么是时钟 时钟是单片机运行的基础 时钟信号推动单片机内各个部分执行相应的指令 时钟系统就是CPU的脉搏 决定cpu速
  • 嵌入式毕业设计 基于红外热释电的房间人数计数系统 - 单片机 物联网嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4 1 PIR传感器 4 2 mlx90614红外传感器 5 部分核心代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新
  • 谈谈前后端分离

    1 首先我们先看看SPA SPA全称是single page application 单页面应用 它是一种网络应用程序 webAPP 模型 传统网站里面 不同页面的切换一般是直接从服务器加载一整个新页面 而SPA这个模型 则是通过动态的重写

随机推荐

  • AI根据视频画面自动配音 ,真假难辨 !(附数据集)

    本文经AI新媒体量子位 公众号ID qbitai 授权转载 转载请联系出处 本文长度为3216字 建议阅读7分钟 本文为你分享实现AI自动为视频配音的流程 先来做个 真假美猴王 的游戏 你将看到两段画面相同的视频 请判断哪段来自视频原声 哪
  • Golang goroutine MPG模式浅析

    协程是通过使用关键字 go 调用 或执行 一个函数或者方法来实现的 也可以是匿名函数 Go 语言在语言层面上支持了并发 goroutine是Go语言提供的一种用户态线程 有时我们也称之为协程 所谓的协程 某种程度上也可以叫做轻量线程 它不由
  • package有什么作用

    常见笔试题 下列说法中 正确的是 A Java 中包的主要作用是实现跨平台功能 B package 语句只能放在 import 语句后面 C 包 package 由一组类 class 和接口 interface 组成 D 可以用 inclu
  • 硬件面试题目

    1 请列举您知道的电阻 电容 电感品牌 最好包括国内 国外品牌 电阻 日本 muRata 村田 Panasonic 松下 ROHM 罗姆 susumu TDK 中国 YAGEO 国巨 FH 风华 电容 日本 Matsushita 松下 mu
  • Windows Git配置SSH

    进入桌面 或者文件管理中右键 gt 打开Git命令窗口 生成ssh keygen 命令 wolfs com 为你的Git账号 ssh keygen t rsa C wolfs com 必要信息有所打码 可自行更改 然后提示你输入密码进行验证
  • vue总引入VConsole

    第一种 使用import的方式 通过main js中引入 先创建一个全局的vconsole js import Vconsole from vconsole const vConsole new Vconsole export defaul
  • mybatis缓存级别以及如何开启二级缓存

    一级缓存 范围 一级缓存是基于 SqlSession 的本地缓存 与单个 SqlSession 相关联 生命周期 一级缓存的生命周期是短暂的 仅在同一个 SqlSession 内有效 当在同一个 SqlSession 中执行相同的查询时 第
  • fcn从头开始_如何使用Go从头开始构建区块链

    fcn从头开始 介绍 Introduction With Web 3 0 and blockchain becoming more mainstream every day do you know what blockchain is Do
  • 复杂网络博弈:用matlab实现囚徒困境

    复现方格网下囚徒困境博弈程序 分别画出b 0 8 2之间 以0 2为间隔的 均衡状态下的网络快照 及合作者比例变化图 设置囚徒困境博弈参数 b values 0 8 0 2 2 0 合作者得到的收益相对于双方都不合作时的收益的比例 N 20
  • 单个el-form-item中有多个必填

    element ui组件里的el form设置为必填都是一对一的 而一个里面包含多个选择框或输入框的却无法实现 怕自己说不清楚 附一张图吧 图中 下发周期 是一个el form item的label名 下面的都包含在里面 设置必填使二者都生
  • 如何在知乎上进行markdown创作?

    前言 废话 题主和大家一样 也是苦苦找不到解决办法 中到有一天 偶然看到一款神器 方才完成由猴到人的蜕变 话不多说 直接上教程 404警告 本猿写教程一向很结构化 看不懂就留言吧 1 正文 如何在知乎上进行markdown创作 所需工具 已
  • LVS+Web

    一 LVS NAT模式 1 根据拓扑图搭建好实验环境 拓扑如下 2 rhel1配置 1 编译ipvsadm源码包 2 ipvsadm配置与启动 3 查看ipvsadm配置 4 开启内核路由转发 vim etc sysctl conf 修改如
  • 阿里云轻量应用服务器使用指南

    阿里云轻量应用服务器使用指南 云服务器 云服务器 Elastic Compute Service ECS 是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务 其管理方式比物理服务器更简单高效 用户无需提前购买硬件 即可迅速创建或释放任意
  • mybatis—PageHelper分页失效问题

    当PageHelper分页失效时 可以看一下PageHelper开启startPage后是否查询了多个list 是否在通过多个mapper xml方法返回了多个list PageHelper startPage page rows eg 错
  • 【问题记录】如何使用 pip 在 linux 上安装 pytorch

    一 进入 pytorch 官网 pytorch 官网 https pytorch org 二 在页面选择环境 三 复制官网弹出的命令并运行即可 pip3 install torch torchvision torchaudio index
  • loadrunner负载发生器和性能计数器

    一 添加负载发生器 如果发现不能同时设置本机和负载机 解决办法是先选择Scenario gt Convert Scenario to the Percentage Mode 将场景模式由用户组切换为百分比 然后在已经添加好的Load Gen
  • rabbitmq java 删除交换机与队列

    rabbitmq java 删除交换机与队列 删除指定队列 直接删除 channel queueDelete queueName 删除指定交换机 直接删除 channel exchangeDelete exchangeName 清空指定队列
  • 工作日记——@RequestMapping 的String&&View适配 ————2016-1-14

    问题描述 工作上遇到要在一个RequestMapping 方法里适配返回值为string 或者json对象 以下是解决方案 部分涉及业务逻辑请忽略 1 RequestMapping方法 RequestMapping method Reque
  • 前端Base64编码知识,一文打尽

    原文 https juejin cn post 6989391487200919566 作者 云的世界 掘金专栏 前端基础进阶 大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 前言 本
  • 使用Python抓取同花顺资金流数据

    今天我们通过一个例子来介绍python爬取数据的一般步骤 用到的工具包括python的经典模块requests和BeautifulSoup 另外结合刚学习的任务流工具TaskFlow来完成代码开发 我们先来看一下要爬取的数据 网址是http