python爬虫股票数据分析判断股票好坏_学 Python 爬虫:爬取股票信息

2023-10-29

分析

打开 Chrome 的开发者模式,将股票代码一个一个选出来吧。

我们可以将所有的股票代码存放在一个列表中,剩下的就是找一个网站,循环的去将每一只股票的数据取出来咯。

同花顺

想必各位聪明的同学已经发现了, 000001 就是股票代码。

我们接下来只需要拼接这个链接外汇账号密码http://www.kaifx.cn/question/...,就能源源不断的获取到我们想要的数据。

实战

首先,还是先介绍一下本次实战用到的请求库和解析库为: Requests 和 pyquery 。数据存储最后还是落地在 Mysql 。

获取股票代码列表

第一步当然是先构建股票代码列表咯,我们先定义一个方法:

def get_stock_list(stockListURL):

r =requests.get(stockListURL, headers = headers)

doc = PyQuery(r.text)

list = []

# 获取所有 section 中 a 节点,并进行迭代

for i in doc('.stockTable a').items():

try:

href = i.attr.href

list.append(re.findall(r"\d{6}", href)[0])

except:

continue

list = [item.lower() for item in list] # 将爬取信息转换小写

return list

获取详情数据

详情的数据看起来好像是在页面上的,但是,实际上并不在,实际最终获取数据的地方并不是页面,而是一个数据接口。

1

至于是怎么找出来,小编这次就不说,还是希望各位想学爬虫的同学能自己动动手,去寻找一下,多找几次,自然就摸到门路了。

现在数据接口有了,我们先看下返回的数据吧:

showStockDate({"info":{"000001":{"name":"\u5e73\u5b89\u94f6\u884c"}},"data":{"000001":{"10":"16.13","8":"16.14","9":"15.87","13":"78795234.00","19":"1262802470.00","7":"16.12","15":"40225508.00","14":"37528826.00","69":"17.73","70":"14.51","12":"5","17":"945400.00","264648":"0.010","199112":"0.062","1968584":"0.406","2034120":"9.939","1378761":"16.026","526792":"1.675","395720":"-948073.000","461256":"-39.763","3475914":"313014790000.000","1771976":"1.100","6":"16.12","11":""}}})

1

很明显,这个结果并不是标准的 json 数据,但这个是 JSONP 返回的标准格式的数据,这里我们先处理下头尾,将它变成一个标准的 json 数据,再对照这页面的数据进行解析,最后将分析好的值写入数据库中。

def getStockInfo(list, stockInfoURL):

count = 0

for stock in list:

try:

url = stockInfoURL stock

r = requests.get(url, headers=headers)

# 将获取到的数据封装进字典

dict1 = json.loads(r.text[14: int(len(r.text)) - 1])

print(dict1)

# 获取字典中的数据构建写入数据模版

insert_data = {

"code": stock,

"name": dict1['info'][stock]['name'],

"jinkai": dict1['data'][stock]['7'],

"chengjiaoliang": dict1['data'][stock]['13'],

"zhenfu": dict1['data'][stock]['526792'],

"zuigao": dict1['data'][stock]['8'],

"chengjiaoe": dict1['data'][stock]['19'],

"huanshou": dict1['data'][stock]['1968584'],

"zuidi": dict1['data'][stock]['9'],

"zuoshou": dict1['data'][stock]['6'],

"liutongshizhi": dict1['data'][stock]['3475914']

}

cursor.execute(sql_insert, insert_data)

conn.commit()

print(stock, ':写入完成')

except:

print('写入异常')

# 遇到错误继续循环

continue

完整代码

我们将代码稍作封装,完成本次的实战。

import requests

import re

import json

from pyquery import PyQuery

import pymysql

# 数据库连接

def connect():

conn = pymysql.connect(host='localhost',

port=3306,

user='root',

password='password',

database='test',

charset='utf8mb4')

# 获取操作游标

cursor = conn.cursor()

return {"conn": conn, "cursor": cursor}

connection = connect()

conn, cursor = connection['conn'], connection['cursor']

sql_insert = "insert into stock(code, name, jinkai, chengjiaoliang, zhenfu, zuigao, chengjiaoe, huanshou, zuidi, zuoshou, liutongshizhi, create_date) values (%(code)s, %(name)s, %(jinkai)s, %(chengjiaoliang)s, %(zhenfu)s, %(zuigao)s, %(chengjiaoe)s, %(huanshou)s, %(zuidi)s, %(zuoshou)s, %(liutongshizhi)s, now())"

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'

}

def get_stock_list(stockListURL):

r =requests.get(stockListURL, headers = headers)

doc = PyQuery(r.text)

list = []

# 获取所有 section 中 a 节点,并进行迭代

for i in doc('.stockTable a').items():

try:

href = i.attr.href

list.append(re.findall(r"\d{6}", href)[0])

except:

continue

list = [item.lower() for item in list] # 将爬取信息转换小写

return list

def getStockInfo(list, stockInfoURL):

count = 0

for stock in list:

try:

url = stockInfoURL stock

r = requests.get(url, headers=headers)

# 将获取到的数据封装进字典

dict1 = json.loads(r.text[14: int(len(r.text)) - 1])

print(dict1)

# 获取字典中的数据构建写入数据模版

insert_data = {

"code": stock,

"name": dict1['info'][stock]['name'],

"jinkai": dict1['data'][stock]['7'],

"chengjiaoliang": dict1['data'][stock]['13'],

"zhenfu": dict1['data'][stock]['526792'],

"zuigao": dict1['data'][stock]['8'],

"chengjiaoe": dict1['data'][stock]['19'],

"huanshou": dict1['data'][stock]['1968584'],

"zuidi": dict1['data'][stock]['9'],

"zuoshou": dict1['data'][stock]['6'],

"liutongshizhi": dict1['data'][stock]['3475914']

}

cursor.execute(sql_insert, insert_data)

conn.commit()

print(stock, ':写入完成')

except:

print('写入异常')

# 遇到错误继续循环

continue

def main():

list = get_stock_list(stock_list_url)

# list = ['601766']

getStockInfo(list, stock_info_url)

if __name__ == '__main__':

main()

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

python爬虫股票数据分析判断股票好坏_学 Python 爬虫:爬取股票信息 的相关文章

  • linux 文件及目录的基本操作

    文件的操作命令 1 显示指定目录和文件 ls eg ls l etc d 2 显示当前目录的名称 pwd eg pwd 3 进入 退出目录 cd eg cd etc 进入根目录下的etc目录 cd 退回到上一级目录 cd 退回到根目录 4
  • Scrum Master 面试题 – 你必须知道的22个Scrum基础知识

    以下的22个问题基本上涵盖了Scrum所涉及的内容 如果你能够正确回答出所有问题 那么你已经具备了作为一名Scrum Master的基本素质 当然 作为一名合格的Scrum Master 更重要的是你的经验 因为Scrum Master更多
  • 尺取法--例题模板详解

    尺取法 一种神奇的技巧 在Codeforces中显示它的算法名称叫做 two pointers 直译成中文的话叫双指针法 尺取法 顾名思义 像尺子一样取一段 尺取法通常是对数组保存一对下标 即所选取的区间的左右端点 然后根据实际情况不断地推
  • 细谈Vue中插槽Slots

    细谈Vue中插槽Slots 浅谈Vue中插槽Slots 1 默认插槽 2 后备内容 3 具名插槽 4 作用域插槽 5 代码实践 浅谈Vue中插槽Slots
  • Java中的SPI机制及接口多实现调用

    1 SPI机制 SPI 全称为 Service Provider Interface 是JDK内置的一种服务提供发现机制 SPI充分体现了面向接口编程的特点 系统内置接口方法 在实际运行中用户可以自定义实现类来满足不通的实现需求 SPI机制
  • Mybatis-plus接口绑定xml语句

    我们启动没有配置任何东西的时候的 报错 AbstractHandlerExceptionResolver java 194 org springframework web servlet mvc method annotation Exce
  • 搭建redis哨兵集群,master宕机后无法执行故障切换的解决方法

    最近在学习搭建redis哨兵集群时 遇到的一些问题 分享一下 首先说明一下 我是同一台虚拟机中开启3个redis实例 模拟主从集群 一个master端口为7001 2个slave端口为7002 7003 3个哨兵sentinel实例端口为2
  • MyBatis-Generator在Eclipse上配置及使用

    之前用MyBatis框架的时候 都是手敲的代码 就感觉到好麻烦的样子 今天就到网上搜了一下MyBatis自动构建工具 就发现在官网上推荐了MyBatis Generator这个构建工具 官网推荐地址 http mybatis github
  • fio数据生成曲线图

    1 背景 我们常常在测试fio的时候 一般只会看到最终测试结果 如下所示 root localhost zhangyi fio filename test file direct 1 rw randwrite numjobs 1 iodep
  • HTML中表格的属性

    tips 不敢说经常用table 介绍本篇文章源于朋友问的一个简单问题 怎么获取table中某个单元格中的数据 table rows length 表格是网页制作时最常使用的元素了 可以说 大部分的网页都是由表格支撑的 没有表格的网页绝对是
  • 邮件发送工具类及邮箱有效性校验

    邮件对象 import lombok Data import java util Date 邮件对象 author huxiang Data public class Email 邮件标题 private String subject 邮件
  • 时间复杂度和空间复杂度的计算

    1 时间复杂度 1 1一层循环 1 1 1解题思路 列出循环趟数t和每轮循环i的值 找到t与i的关系 确定循环停止条件 联立解方程 写结果 1 1 2举例 求时间复杂度 i n n while i 1 i 2 t 0 1 2 i t与i的关
  • Go语言sync.Map

    Go语言中的 map 在并发情况下 只读是线程安全的 同时读写是线程不安全的 如果想实现并发线程安全有两种方法 map加互斥锁或读写锁 标准库sync map Go1 19 新特性 sync map源码 https github com g
  • Servlet的生命周期

    在 Java 中 任何对象都有生命周期 Servlet 也不例外 Servlet 的生命周期如下图所示 图 Servlet生命周期 图 描述了 Servlet 的生命周期 按照功能的不同 大致可以将 Servlet 的生命周期分为三个阶段
  • 一篇文章了解什么是串口,UART、RS-232、RS-422、RS-485

    通讯问题 和交通问题一样 也有高速 低速 拥堵 中断等等各种情况 如果把串口通讯比做交通 UART比作车站 那么一帧的数据就好比汽车 汽车跑在路上 要遵守交通规则 如果是市内 一般限速30 40 而高速公路则可以到120 而汽车走什么路 限
  • android 项目中出现红色感叹号的解决方法

    文本转载 http www apkbus com forum php mod viewthread tid 5629 问题原因 工程中classpath中指向的包路径错误 解决办法 右键项目名称 BuildPath gt Configure
  • Unicode(UTF-8, UTF-16)令人混淆的概念

    为啥需要Unicode 我们知道计算机其实挺笨的 它只认识0101这样的字符串 当然了我们看这样的01串时肯定会比较头晕的 所以很多时候为了描述简单都用十进制 十六进制 八进制表示 实际上都是等价的 没啥太多不一样 其他啥文字图片之类的其他
  • 2023年全国普通高校学科竞赛排行榜,中国高等教育学会版,84项(新增27项)

    2023年全国普通高校学科竞赛排行榜 中国高等教育学会版 84项 新增27项 文章目录 2023榜单竞赛 2023年3月22日 中国高等教育学会高校竞赛评估与管理体系研究专家工作组发布 2022全国普通高校大学生竞赛分析报告 以下简称 分析
  • 八、基础教程-数据列(Series)

    数据列配置是 Highcharts 最复杂也是最灵活的配置 如果说 Highcharts 是灵活多变 细节可定制的话 那么数据列配置就是这个重要特性的核心 一 什么是数据列 数据列是一组数据集合 例如一条线 一组柱形等 图表中所有点的数据都

随机推荐

  • 在create-react-app项目下,使用eslinit和prettier美化代码

    虽然官方脚手架create react app当中默认提供了eslint 但是由于官方的配置不是很充分 导致了在是进行代码优化方面不是很理想 但是 我们可以自行配置达到写出高质量代码的目的 ESlint 不是自带格式化吗 为什么还要用 Pr
  • 央行发行数字货币对我们意味着什么?

    实际上恰恰在这种行情下 我们才能不受价格暴涨和利益诱惑沉下心来研究业界实质性的进展 发现孕育下一波红利的机遇 央行数字货币有了实质性进展 8月10日 中国人民银行支付结算司副司长穆长春表示人民银行的数字货币已经呼之欲出 并介绍了人行数字货币
  • 电路基础(1)电路模型和电路定律

    电路中的电压 电流之间具有两种约束 一种是由电路元件决定的元件约束 另一种是元件间连接而引入的几何约束 就是拓扑约束 后者由基尔霍夫定律来表达 基尔霍夫定律是集总参数电路的基本定律 1 电路和电路模型 电源又称为激励源或激励 由激励在电路中
  • python使用HanLP命名实体识别(以识别人名为例)

    首先需要安装依赖包 pip install pyhanlp 识别人名的代码如下 from pyhanlp import HanLP def extract chinese name string str gt list 使用HanLP人名识
  • C++ do...while 循环

    不像 for 和 while 循环 它们是在循环头部测试循环条件 do while 循环是在循环的尾部检查它的条件 do while 循环与 while 循环类似 但是 do while 循环会确保至少执行一次循环 语法 C 中 do wh
  • Nginx 4层代理部署

    Yum安装Nginx 系统环境 Centos 添加yum源并安装 CentOS 7 rpm Uvh http nginx org packages centos 7 noarch RPMS nginx release centos 7 0
  • JS 数组去重复数据、处理数组数据

    需求 去除数组里id重复的对象 let arr id 1 name zhang id 1 name li id 2 name he id 2 name zhao id 2 name zhao id 3 name liu name li id
  • Web端报错

    Chunk vendors 2a8c602b js 48混合内容 位于 https 3323 sfdy13168 com goodsManage 的页面通过HTTPS加载 但请求了不安全的XMLHttpRequest端点 http 110
  • nacos配置文件优先级

    1 通过工程的应用名字找到德配置文件的优先级最高 比如content api工程功程对应的content api dev yaml文件是最先的优先级 2 扩展配置 项目中会依赖其他模块的配置文件所依赖的nacos配置 的优先级其次 举例 c
  • cuda 安装

    零 修订记录 序号 修订内容 修订时间 1 新增 20210708 2 支持tensorflow 20210715 一 摘要 本文主要介绍cuda 的安装 二 环境信息 一 软件信息 2 1 1 操作系统 root localhost ca
  • 【Java】* 给定一个整数数组 nums 和一个目标值 target, * 请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    leetcode 刷题 数组 题目 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 示例 给定 nums 2 7 11 15 target 9 因为 nums 0
  • openGauss学习笔记-64 openGauss 数据库管理-创建和管理表空间

    文章目录 openGauss学习笔记 64 openGauss 数据库管理 创建和管理表空间 64 1 背景信息 64 2 注意事项 64 3 操作步骤 64 3 1 创建表空间 64 3 2 在表空间中创建对象 64 3 3 查询表空间
  • git checkout切换到指定commit

    切换分支是 git checkout 最常见的功能 这里不做介绍 今天主要介绍下它在撤销文件改动上的应用 放弃单个文件修改 注意不要忘记中间的 不写就成了检出分支了 git checkout filepathname 放弃所有的文件修改 g
  • 值得推荐的C/C++框架和库,包含很多开源项目 (真的很强大)

    值得学习的C语言开源项目 1 Webbench Webbench是一个在linux下使用的非常简单的网站压测工具 它使用fork 模拟多个客户端同时访问我们设定的URL 测试网站在压力下工作的性能 最多可以模拟3万个并发连接去测试网站的负载
  • mysql分组统计占比/百分比

    需求 统计当前数据库user tasks表中 不同status字段值对应的记录条数及占比 sql语句 SELECT status number concat round number total 100 00 2 percent FROM
  • Week 2 Git &Github 5: Amending commits

    git commit amend overwirte 上一次commit 用这个命令的前提是只能对本地的commit进行这样的操作 不要在跟他人公用仓库时使用这个操作 容易出现错误 使用案例 win10通过左下角windows图标 右键打开
  • 量化投资学习-17:庄家和主力为啥要在牛市到顶后砸盘?

    一直很奇怪 为啥庄家和主力要留一小部分筹码在牛市的顶部砸盘 你赚完自己的钱 走人就是了 走人之后 让散户自己玩不就得了 为啥要做这种损人不利己的事情呢 砸盘是要牺牲砸盘筹码的利益的 不理解这一点 是因为格局不够大 这是散户的眼光局限性所决定
  • 复现贪吃蛇程序——吃食物增加长度(最后一篇)

    本节便是贪吃蛇程序的最终部分 实现吃食物增加长度的功能 当二维数组canvas High Width 的元素值为 2时输出食物数值 F 其实现思路和3 4 2节中小蛇的移动类似 只需保持原蛇尾 不将最大值变为0即可 先奉上完整的代码 inc
  • 3个珍藏已久的资源网站,个个都很厉害,赶快私藏起来吧

    现在想要找到好的资源真的是难上加难了 拥有资源即拥有财富 今天小编就来给大家分享几个优质的资源网站 让你从此以后找资源不发愁 1 爱资料工具 这个网站是一个小工具合集的网站 虽说它页面布局有点混乱 但是这完全不影响它的实用性 包括开发工具
  • python爬虫股票数据分析判断股票好坏_学 Python 爬虫:爬取股票信息

    分析 打开 Chrome 的开发者模式 将股票代码一个一个选出来吧 我们可以将所有的股票代码存放在一个列表中 剩下的就是找一个网站 循环的去将每一只股票的数据取出来咯 同花顺 想必各位聪明的同学已经发现了 000001 就是股票代码 我们接