定向爬取股票数据——记录一次爬虫实战

今天是八月2号,自学python爬虫已经一整个月了。不学不理解,真正学了才发现,python不愧是一门博大精深的高级编程语言,我学到现在也才只见识到它冰山一脚,python应用的范围即便相比于c、c++、java等老牌语言也不逞多让;爬虫只是它庞大功能体系的一种,而我一个月来的学习单论爬虫这一块来说也只能说堪堪入门,距离熟练使用再到掌握还有很遥远的路程。

虽然爬虫的路途依旧遥远,但一个月的努力也不可能白费,想起来还没有尝试过股票数据的抓取,为了检测进度,也算打磨打磨暑期时间,just do it!

既然要爬取网站的股票信息,那就要选好目标网站,根据网络爬虫的robots协议的协定和大站优先的爬虫策略,在观察了多家股票大头网站后,我最终选定了——‘东方财富网’进行数据爬取,该网站robots.txt文件信息如下
在这里插入图片描述

可以看见,该网站允许所有搜索引擎按照robots协议合理的抓取网站中的所有文件、目录。那么我就可以放心大胆的进行爬虫了!

进入该网站找到沪深A股所有个股的列表界面,方便爬虫爬取信息
在这里插入图片描述

打开开发者工具进行数据定位发现html源码中并没有我想要的股票信息,由此可以知道这个网站使用了js异步加载。那我平时最常用的requests库是肯定没办法爬的,我第一时间想到的是使用network进行抓包分析和selenium+chromedriver无头模式这两种方式

我首先尝试了抓包分析js代码来找到股票信息数据或url,在network找可疑的js代码块,发现有这两条比较可疑的js代码
在这里插入图片描述

复制这两个js代码的请求头链接进入后找到这个
在这里插入图片描述

已经出现了该页面的表头介绍,如下图。本以为真实链接呼之欲出,再仔细一看发现href字段有一些奇奇怪怪的字符,还有f1,f2,f3…奇怪的fields字段,看来网站对他们的数据加密措施实施地很到位嘛,,,,毫无头绪、无计可施、知识盲区,抓包方式失败!
在这里插入图片描述

条条大路通罗马,既然抓包这条路走不通,那就换一条路——上selenium加谷歌无头浏览器这一大杀器,selenium在爬虫中可谓无往不利,只要浏览器用户可以在客户端使用浏览器能够浏览的网页它都能爬,完美解决js动态加载页面的问题,缺点就是爬虫效率不高且对于流浪党很不友好。因为selenium是一款自动化监测工具,极大程度模拟人的浏览网页的动作,每个页面每个版块都要加载,相比于requests效率不足且耗费流量。但这些都并不重要,用python写爬虫本就不是为了它的时间效率,而是图个简洁图个方便。

首先导入相关库,设置Chrome的无头参数:
在这里插入图片描述

因为个股信息量比较大,使用单线程同步运行的方式速度很慢,于是我还用到了替换threading多线程库加大爬虫效率,为了使爬虫爬取的数据便于统计观察导入了xlwt模块将信息写入excel表格中并保存本地(下图为在主函数设置必要参数,创造线程)
在这里插入图片描述

还差最重要的一步:设计一个进行url请求、元素定位、数据存储的主要函数(此处因为博主突发懒癌而将这些功能全套在了一个getStockInfo函数里)

核心代码完,至此爬虫已经完成,看看最终实现效果(跪求没有bug!跪求没有bug!!跪求没有bug!!!):
在这里插入图片描述
在这里插入图片描述

大获成功,ye!!

数据已经成功爬取,不过还有很多地方需要完善,之后我还会引入python的定时任务调度器,每天收盘时刻准时爬取当天股票最新信息,这样就可以足不出户每天坐收行情信息了,权当是一种菜鸡码手无聊之余的乐趣

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值