python学习一年的一点心得——API接口开发篇

一晃一年过去了,犹记得一年前刚刚接触python时那种忐忑的心情,由于工作的内容的变化,要求自己必须掌握一门编程语言,由于学生时期有过C、C++、汇编的学习经历,自然选择了一种与之类似,但又上手快的语言--python。

遥远的2017年曾短暂的接触过python,但也仅限于蜻蜓点水、浅尝辄止而已。这一次还是下定决心来好好的研究一番,第一个想到的就是CSDN上来学习,同时也从手机短视频平台接触了一家线上培训的公司。充了会员解决了一些VIP文章和VIP下载的需求,线上培训解决了从基础到进阶的一些列学习问题。

一开始看视频学习的时候,从基本的语法比如说字符串、整型、浮点型、字典、列表、元祖等,有了个初步的了解后,直接进入了要做得项目中,通过API接口对接系统抓取数据。后来才知道,此过程和python的爬虫是一样的,所以又去学了爬虫的课程,通过request库,post和get来获取数据。

当我第一次运行脚本时,看着打印出来的一堆数据,和APIPOST测试出来的数据比对了下,完全正确的时候,内心是欢呼雀跃的,想象着一切都很顺利,just a cake。没想到,数据出来了,清洗数据,保存数据,定时抓取数据,循环抓取数据等等一大堆头疼的事情接踵而来,没想到获取数据只是最简单的一步,后面的才是真正意义上的数据处理。

通过寻找,找到了json数据的处理方式,获得json数据后,又利用pandas这个数据处理的万能工具进行数据dataframe化,利用pandas.json_normalize将数据格式化、用df.drop或者df.loc进行数据清洗,选出真正可以使用的数据,然后利用sqlachemy将dataframe数据进行存入数据库,用create_engine建立数据库连接,然后df.to_sql的方法将数据直接存储到数据库,这个方法的好处就是不需要有建立好的表,也可以进行数据存储。但是存储的过程中遇到了一个问题就是,数据里面的表头存在不符合sql定义的项,所以在dataframe数据存储之前用df.columns将存储数据的表头进行了固定。好了我的第一个实际意义上的python脚本写出来了,也在数据库里能够看到抓取出来的数据,当时那是幸福的哟。虽然写的过程很简单,其中还是有很多复杂的地方的,比如说data数据是字典嵌套列表、列表里面又嵌套字典,有的数据是需要通过循环才能取出来,所以这个过程就需要又很好的python基础的,循环遍历这些都要清晰的了解。

这个过程大概花了一个多月的时间,往后又慢慢的用redis来解决了连续取数据的时间段问题,取完数据将endtime放置到redis中,下次取数据时先到redis里面将endtime取出赋值给starttime,这里就可以做到取数的连续性。

平常运行中又遇到了各种运行错误,最常见的就是取值为空时,dataframe数据清洗报错,然后又通过判断语句解决了没有数据时的问题,while if else加上break exit等结束执行语句等等。

前后大概写了十几个接口,因为数据取源的不同,数据类型的不同等等,只有共性的采用类来解决,也采用了模块化设计来解决共性接口,前后数据库中建立了十几张表,为好几个信息系统稳定提供数据,最近又采用df.concat()和df.drop_duplicates解决了数据更新的问题,不再简单暴力的重复建立数据表的工作,下一步将研究如何采用多线程的方式提高抓取数据的时效性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oppo_123456

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值