今天在测试下载本月(5月)数据时发现,只有6号、7号、9号和15号有数据,其他日期的数据都是完全相同的。

如何解决这个问题?

通过观察发现,没有数据或数据读取很慢时,页面上会出现这样的进度条:

所以修改代码,加了数据验证判断,进度条这个DIV出现时,就每隔1秒再读一次,10秒后如果还没有得到数据则跳过。

    # ——————判断是否加载完毕——————def is_load(self):try:time.sleep(2)  # 暂停1秒,等数据刷新load_node = self.browser.find_element_by_css_selector(".dot-spinner")print(load_node)return 0except Exception as e:return 1

下载数据的代码修改如下:

# 5.读取日期DIV的数据,如果与所选日期相同,说明更新了数据
date_m = self.browser.find_element_by_css_selector(".ban-chart-date-day")
if(int(date_m.text)==date.day):i = 1while(self.is_load()==0):i += 1if(i>10):breakif(i<=10):# 得到指定日期的数据并保存self.fupan(date)

通过上述办法,暂时解决了数据读取错乱的问题。但又出现了新问题,大盘数据也没有保存。

通过观察页面数据,发现大盘相关数据有更新,只是页面下方的列表数据没有读取到。所以将数据保存再次进行拆分,大盘数据和涨停数据分开保存。


经过整个上午的调试和思考,发现从页面读取数据的局限性非常大,很容易出错。

那有没有更好的办法呢?

当然是有的,在浏览器上按F12,选择“network”,再次选择其他有数据的日期发现,有很多读取数据的操作被执行,请看下图:

经过观察发现,前四个都是line访问,没有想要的数据,而detail得到JSON格式数据:

手动修改其他日期,如5月10号是没有数据的,结果如下:

再次切换到其他有数据的日期,又能得到数据。所以,接下来可以直接访问该地址,直接得到数据并保存即可。具体实现代码下一篇再讲。

关于项目,需要再次优化,优化内容如下:

# 要解决的问题 (*越多,越重要):
# 一、自动运行,每天三点过后执行一次读取数据,然后后关闭程序(***)
# 二、读取 https://xuangubao.cn/dingpan/redian 页面内容(**)
# 三、筛选热点板块和板块中的强势个股(***)
# 四、python操作excel文件,填充数据(*)

老鱼Python数据分析——篇十三:“选股宝”数据下载代码优化相关推荐

  1. 老鱼Python数据分析——篇十四:读取“选股宝”的热点板块信息并存为excel文件

    热点板块页面:https://xuangubao.cn/dingpan/redian 一.首先分析板块名对应的标签 二.根据板块名在excel文件中创建对应的sheet,excel的操作这儿就不细说了 ...

  2. 老鱼Python数据分析——篇九:项目重构(代码)

    修改后的结构如下图所示: common目录下是通用文件,test目录下是功能文件,test目录下的agudata用于保存A股每月的数据 一.xgb_data.py,用于保存xgb网站需要的个人信息,如 ...

  3. 老鱼Python数据分析——篇十:使用selenium获取历史数据并保存

    具体实现步骤如下: 一.打开打开盯盘页面,分析日期控件. 二.点击该区域,出现年-月-日界面. 三.点击"1"号,判断日期是否已改变,改变后下载数据. 四.重复步骤一.二.三,一直 ...

  4. 老鱼Python数据分析——篇十五:“选股宝”使用API下载JSON格式数据

    从页面读取数据每次都需要定位HTML标签,那么有没有更简洁的办法呢? 当然有,那就是找到页面数据的来源,分析哪些数据是我们想要的,直接通过WebAPI来获得数据. 我使用的是360极速浏览器,按F12 ...

  5. 老鱼Python数据分析——篇十八:消息推送(二)

    任务三:使用微信机器人和极光API推送消息 一.微信机器人推送消息 使用微信机器人的本质其实就是使用Web端微信,所以有不少的限制,比如 近几个月申请的新微信号是不能登录的 (亲测证实),要注意. 在 ...

  6. 老鱼Python数据分析——篇十七:使用pycharm创建django项目

    最近把基础的数据爬取和存储都学习完了,开始进行数据的显示,考虑到通用性,还是使用Web方式来显示数据吧. 所以接下来就开始django学习之路,因为django是一个免费并且强大的开源Web框架. 使 ...

  7. 老鱼Python数据分析——篇二:系统设计(找代理IP)

    开发环境:win7 x64版本,python 3.6,Anaconda3 (64-bit) 因为频繁访问容易被封IP,所以我们需要使用代理来进行数据的爬取(当然你也可以放慢节奏,比如每5秒爬一条记录) ...

  8. 老鱼Python数据分析——篇三:操作MySQL数据库

    Python操作数据库非常的方便. 不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块. DB-API 是一个 ...

  9. 老鱼Python数据分析——篇十八:消息推送(一)

    需求分析 这两天想把分析处理之后的数据,做一个定时发送,按照自己设想和百度搜索,发现有以下几种办法.(只是我发现比较大众化的办法,不代表只有这几种方法) 发送邮件 QQ机器人 微信机器人 极光API ...

最新文章

  1. luogu P3391 【模板】文艺平衡树(FHQ - treap,懒惰标记)
  2. linux 文件与目录管理命令
  3. 视频台词现在不用背也不用配,连对口型都免了
  4. tensorflow 1.0 学习:参数和特征的提取
  5. terminal services 找不到_电脑局域网中查看不到其他计算机或无法连接的解决办法...
  6. WampServer + phpcms 开发中,浏览器 localhost 出现 Cannot to connect to mySQL server 的原因分析和解决办法?
  7. 转:关掉Archlinux中烦人的响铃
  8. linux snap文件夹,SNAP 文件扩展名: 它是什么以及如何打开它?
  9. 怎么样写一个 node.js模块以及NPM Package
  10. C# Winform开发人脸识别小程序 (基于百度接口)
  11. Youtube 开发通过遥控机控制实现快进快退功能
  12. AI领域首位图灵奖得主Marvin Minsky:求索“智能”奥秘的一生 | 人物志
  13. 【无标题】c++日常练习(16)——从中序与前序遍历序列构造二叉树
  14. 3-8 租用游艇问题(动态规划)
  15. linux qt3编译出错,编译ARM 平台的qt4.7.3 遇到的一些问题总结
  16. C语言占位符 格式占位符
  17. 解决区块链三大问题的利器
  18. js按下回车键调用方法
  19. 和尚与尼姑雨中相遇后不得不说的故事1
  20. FDR土壤水分检测传感器设计方案

热门文章

  1. linux上热编译react,reactos终于被成功编译通过
  2. 加密货币涨跌的原理到底是什么?
  3. M システム - 笔记(4) -- 客户合作胜过合同谈判
  4. fsck|xfs_repair 磁盘修复
  5. 灰度拉伸python_对比度拉伸(一些基本的灰度变换函数)基本原理及Python实现
  6. 计算机跨考专业基础差复试,跨考计算机过来人教你备考:从初试到复试
  7. 1.3 项目经理的知识和技能
  8. 我们真的不需要35岁以上的项目经理吗
  9. 周鸿祎:写区块链最好的一篇文章
  10. 万字长文:用Python轻轻松松操作Excel、Word、CSV!