百度指数之图像数字识别(2)

作者介绍

叶成,数据分析师,就职于易居中国,热爱数据分析和挖掘工作,擅长使用Python倒腾数据。

在开始本位之前,这里先感谢一下本人公司的伟哥和孟哥(虽然孟哥也没帮上啥忙,但是以后有的是机会,哈哈)。

上次发了篇运用selenium自动截取百度指数并识别的文章点这里《抓取百度指数引发的图像数字识别》,其实感觉也是有些投机取巧的意思在里面,而且正如大家所知,用selenium比较吃内存,而且因为要渲染网页,爬去效率也比较低。所以这次我们直接请求图片,通过抠图、拼接、再识别的方式来完成这个百度指数爬虫项目。

使用到的Python第三方包:

百度指数如下图所示,需要登录!

和之前一样,爬取百度指数,第一个要面对的问题便是登陆问题,随手百度了一下,关于百度登陆的文章还是不少的,不过说句实话,小编太菜,弄个fiddler抓包,chrome浏览器总是报错,折腾了半天,对于那个rsa加密什么的也是一头雾水,算了,与其复制黏贴,不如以后咱再话时间慢慢弄个明白,这次我们还是用selenium登陆获取cookie

成功登陆并获取cookie后,我们来分析下需要请求的图片

每次移动都会加载出这些文件,我们选一个看看:

我们格式化一下这个json文件,可以看出他是一串css样式,图片url也在里面:

我们把url拿出来,下载图片看看,(这是我随便找的一条,不是的上面链接

没错!你没看错!我们请求的图片就是长这样,怎么还原成前端渲染后的图片,咱们稍后讲,先看看怎么获取图片。

我们看到这里有6个参数,其中classType、className都是不变的,其他4个参数都是变化的,先看最下面这个参数,是一个时间戳,这个好办。剩下res、res2、res3,我寻寻觅觅找到了res3,它藏在这个文件中:

这个userIndexes_enc便是我们请求页面中所有图片的res3参数,所以我们请求图片前要先获取这个文件中的res3,那么我们看下这个文件:

这里同样需要res、res2,头疼!!!各位观众老爷,我对不住你们,我翻看了网页上很多js脚本,没能破解出这个res、res2,这里先当我欠你们的,以后一定还,好不好。既然不能还原它们的生成方式,也不能阻止我的前进,那我们就先拿现成的好了,于是乎我:

还是通过selenium执行js脚本后,拿到res、res2,这两个日期参数就不用多说了,好了请求图片网址的所有参数我们都拿到了,直接开始构建请求吧!

我们先拿到json文件后我们取出了其中需要的res3参数放进列表,接下来我们需要拿着res3再去请求图片网址:

取出网址还不行,我们还要把原图还原成前端渲染后的样子:即从下图

变成下图

所以我们将css样式中的width 和margin_left全部都拿下来,方便等会裁剪拼接图片

咱们这里模拟他的渲染方式来裁剪图片,然后再将裁剪的图片拼接起来。这里随便找张图片看看:

裁剪

拼接

最后一部分就是图像识别了,和之前一样,我们还是使用pytesseract识别。

我们先把图像放大2倍,再识别,并对识别结果容易发生错误的部分进行了修正,一起来看看最后的结果图吧。

Ps:文明爬虫(为了不给网站服务器造成太大压力,大家请求时请放点慢速度)

好了,今天就到这里了,今天是12月31号,2017年的最后一天(对不住大家,小编推送晚了。。。),这篇文章就当做是自己将近半年来学习python的总结吧,还有很多不会的东西,还有很多想学的东西,只希望2018的自己,能够每天进步一点点,望大家共勉!

print (‘2017再见!’)

print (‘2018你好!’)

谨遵原作者的意思,这里就不单独发放源代码了,敬请原谅。

本文来自企鹅号 - 每天进步一点点2015媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android开发实战

Android性能优化-渲染优化

我们在开发的过程中,可能经常会遇到测试的一些反馈,就是APP运行卡顿的问题。我们通常所讲的卡顿问题都是因为渲染掉帧的问题引起视觉上的卡顿感。所以了解渲染机制,我...

16420
来自专栏腾讯IVWEB团队的专栏

APP-hybrid页面性能测试的一些知识记录

做hybrid页面,需要测试其性能。我们不能认为用浏览器打开该网页得到的数据就算它线上的性能,因为 webview 的环境,其性能和浏览器还是有所差距的。最近一...

40300
来自专栏王肖的UT

使用FFmpeg处理音视频

本文主要是介绍如何使用ffmpeg命令行工具进行各式各样的音视频处理操作——缩放、裁剪、剪辑、旋转、格式转换,etc。。。学了本文,基本可以把格式工厂之类的音视...

1.8K80
来自专栏魏艾斯博客www.vpsss.net

Picdiet 在线图片压缩 极速压缩 80%图片质量不变

51210
来自专栏魏艾斯博客www.vpsss.net

Optimizilla 在线图片压缩优化 自由调整图片压缩比例

20450
来自专栏钱曙光的专栏

一周极客热文:厌倦了编程书?3种提高编程技能的有趣方法来帮忙

Code Combat 如果你曾经从书上学习编写代码,你就知道那有多乏味。为什么不试试一些激动人心的方法来使学习更有乐趣呢?下面介绍的这些网站每个都有自己独特...

22360
来自专栏逍遥剑客的游戏开发

XACT Q&A

18850
来自专栏小白课代表

看书必备!安卓+iOS 看小说神器!!

20820
来自专栏玩转全栈

flutter开发技巧汇总[持续更新]

1、你应该会碰到initState会被多次执行的问题,通常发生在tabView的切换时,此时你可能要了解一下这个接口了。

58160
来自专栏MixLab科技+设计实验室

App之应用图标标记

以下为正文: ? 1、概念 应用图标标记,称为Badge App Icon。 Badge,徽章,具象来说, 就是佩带在身上用来表示身份、职业的标志。 它有着悠久...

69870

扫码关注云+社区

领取腾讯云代金券