利用Python制作微信机器人(三)实现爬取JD商品价格

从前两篇的博客来看,目前已经实现了机器人单向给微信发消息,和与机器人进行交互式发消息,详情如下:

利用Python制作微信机器人(一)机器人单向发消息

利用Python制作微信机器人(二)与机器人进行交互

通过这两个操作,目前已经可以实现和机器人正常交互了。因此接下来就不考虑机器人本身了,而是可以考虑给机器人做一些功能来方便我的生活以及让我能在周末时间学习一些新技术。要扩充什么功能,确实需要好好思考。主要看自己有什么需求,有什么痛点,再从痛点出发来实现。突然想到最近自己比较关注显卡的价格,毕竟一直在跌,想看看什么时候入手比较合适。想到了这点,于是我思考,我可以让这个机器人来每天帮我查看显卡价格,并提醒我当前热门的几款显卡是多少钱啊。想到这里说干就干。

1. 技术选择

既然是想爬取jd的数据,最理想的抓法当然是看 页后台是调用了jd的哪些接口获取到的数据,然后再根据数据渲染上去。但是可能是我个人技术水平有限,也可能是jd加密做得好,愣是没找到对应的接口。既然无法通过api接口来获取到对应的商品数据,那只能退而求其次了,用比较笨拙且不稳定,但是也比较见效的基于前端UI方式来抓数据,说白了就是使用selenium来抓。

因为我之前是在国内某手机厂工作过几年,主要做的是自动化测试工具相关的开发。对UI自动化往往是嗤之以鼻的态度,只有在真的没其他办法的情况下,才使用UI来满足需求。因为UI是在最顶端的,往往也是最不稳定的,可能前端随便改个小地方,脚本就得重新适配。因此之前在手机厂工作时候,只要手机系统大版本升级,那么我之前写过的UI脚本基本上就得重写一遍。

但是这次没办法,为了满足这个需求,只能用selenium这种基于UI的方式来实现。

2. selenium实现商品抓取

对于selenium的环境搭建 上有很多博客,讲的都比较详细,因此我就不在这里重复造轮子了,注意不仅要搭建普通的selenium环境,还需要额外做一些操作,让selenium在没有图形化界面的服务器上也能生效,这个 上也有很多教学。只要把selenium等环境搭建好,就可以根据我下面的脚本来进行数据抓取了。

我把整个抓取的过程封装到了名叫的对象上,对于里边如何抓取,我个人感觉是比较枯燥无味的,没啥技术含量,就是看着前端html的代码来一步一步实现的。
需要注意一点的是,在调用JdGoods对象来获取商品列表时候,我传入了两个参数,第一个参数是商品名,第二个参数是类型。这个类型其实是可以不用的,我只是想到以后可以把爬到的数据放到数据库中,后边可以做一些数据查询,所以想增加一个类型的index来表明什么类型的商品。

3.效果展示

运行上方我贴的代码后, 就会返回一个list,这个list就是我们要的商品列表:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月8日
下一篇 2022年3月8日

相关推荐