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

今天在测试下载本月(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 0
        except 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 = 1
    while(self.is_load()==0):
        i += 1
        if(i>10):
            break
    if(i<=10):
        # 得到指定日期的数据并保存
        self.fupan(date)

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

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


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

那有没有更好的办法呢?

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

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

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

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值