美文网首页
爬虫——百度指数

爬虫——百度指数

作者: 辰辰沉沉沉 | 来源:发表于2017-07-26 22:15 被阅读0次

蛮早之前公司有个产品问我能不能爬百度指数,我随便瞄了眼,直接回了可以,然后...光速打脸...今儿个有空,研究研究这玩意儿。嫌长的可以直接拉到最后看后记。

目标

先明确下要做什么,目标不是要写出一个可用的完整的爬虫,只是要个思路。

image.png

我们的目标仅仅只是爬取这边的数字,162和125,还有后边的比例。

分析

先说点题外话,业界对数字的加密真是做的丧心病狂,返回假数据然后js重新计算修改都是简单的了,复杂的还有某移动端网页返回数字234,然而因为使用了特殊的字体显示123的,这边还有个更恶心的迷之加密。
开始分析,首先,展示出来的样子,不像是数字,像是分辨率不高的几张图片,让我们看看渲染完的html长啥样的。

image.png

确实很迷,显示出来好好的类似图片的数字,html里边(而且是渲染完的html)只有几个div和span,class里边倒有几个val,txt,重点怀疑下,要看看哪里用到。而且看上去分辨率很低的图片也还没有出现,而根据我有限的知识,html里边显示出来的图片除了img标签,也就css里的background。很明显,我们在右边找到了背景图,果然,看来问题马上就要解决了,下载下来看看。

image.png

???这是什么鬼???等等,621215,仅有的几个数字似乎有点熟悉,没错,就是上边那几个指数,看来我们已经找到了,感觉就是span里边的style控制显示的背景(还有这种操作??)。

先让我们验证下上面的猜测,方法很简单,换个关键词,找到那个关键词对应的背景图,拿过来替换到该关键词中,看看数字会不会变。

image.png

果然,数字变了,变成了几个不知道是什么的东西。应该是有什么地方可以控制显示背景图的第某个位置之类的方法。

继续瞎改html


image.png

如图,我把imgval 和imgtxt 的style进行了修改,原先的162变成了112,显然,是根据这个来控制显示的值的。这边有两个值,一个是imgval的width,另一个是imgtxt的margin-left。

继续找,这两个值是哪里来的呢?直觉告诉我是js算出来的,一定是某个js 根据一个key,再怎么加密解密(前端就喜欢搞这一套 = = )得到的,一定是。然鹅,当我打开network,竟然发现了这个

image.png

....... 直接去获取的啊....
其实到了这,我已经能抓取了。我们公司是有爬虫渲染的模块的,但是秉承着负责的态度,继续往下看,那这个url是谁发出的呢?

先放一个url
https://index.baidu.com/Interface/IndexShow/show/?res=XzQxJzIIAyRuCxU5CXgybx5THHx9LRE%2FJSZtHnteBHsBBBw%2BflgJJRokN25aQDZKd34gajodKkEWJFxQfDsWBB0WJzF8MnMtFAR%2BExY3VjkNYxooZBt0NEw6Lh5TVkZEAFwSCVEGCTA%2BOFRVJUUFSFgqRm0lYXYTfCJGVVFkOyZ2fzBVMgJnAW5FIhJTMQBAfSB%2BLm0xIAJFWyZILQQGPl8mE0MEIwc8YEtYHmMUOBYaHAQcb3wgXDd%2FVCEqLn0kNzVwDgNzH1krBBwiGioDAAofGwkvDRE%3D&res2=37ST6.341397.033YAYNLDflArlUE8fO8qIhKkWJnVeMVF4jxf0pBWJlMogXpnn7RTSXE37&classType=2&res3[]=z0&res3[]=Ee&className=profWagv

分析下长得很像的几个发出的url,很容易可以发现大部分字段都是一样的,估计是把keyword再和什么东西加密得到的,然后后边都是明文,所以我们只需要找到res和res2生成的方法就可以了。

过去了两个小时...

没想到啊,竟然卡在这了。
直接给结论吧...res和res2都在直接返回的html里边。
res是直接给的,直接搜PPval.ppt后面一长串就是了。

res.png

res2找了我好久,结果也是这里面。。
找到类似这样的东西

res2.png

图中的VWO就是了,需要自己写下这个js模拟算下,要注意的是,这几个字母是会变得!!每次都不一样!!

后记

行了,就这样了,比想象的麻烦多了,但回过头来看其实很简单。

  • 获取页面 类似这样https://index.baidu.com/?tpl=trend&type=0&area=0&time=13&word=%C3%C3%D7%D3%B0%C9 ,这边可能需要登录,我没做
  • 提取PPval.ppt记做res 用正则在上面获取到的html中抽出来就好了
  • 获取res2 res2需要跑一下这个html里边有个script,具体找的方式看上一段
  • 拼接 "https://index.baidu.com/Interface/IndexShow/show/?res={res}&res2={res2}&classType=2&res3[]=z0&res3[]=Ee&className=profWagv".format(res=res,res2=res2)
  • 获取数字 上面url返回的有两样东西,一个style,确定数字位置,一个是background。两者就能得到以图片显示的数字了,然后ocr识别一下分分钟就搞定了(说的简单)

相关文章

  • 2019-07-22

    爬虫基础概念 "大数据时代"从何而来? - 企业生产的用户数据:阿里指数,百度指数,微博指数... - 政府公开的...

  • 百度指数获取踩坑小结

    引言 经过若干天不断地踩坑,总算能够正常获取百度指数啦,Just for fun~ 百度指数爬虫开发的难点不在于爬...

  • 爬虫——百度指数

    蛮早之前公司有个产品问我能不能爬百度指数,我随便瞄了眼,直接回了可以,然后...光速打脸...今儿个有空,研究研究...

  • python爬虫的原理和数据抓取

    为什么要做爬虫?都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数、阿里指数、TBI腾讯浏览...

  • 爬虫天坑系列-百度指数爬虫

    原文链接:http://blog.shenjianshou.cn/?p=170 最近有很多朋友跟我说,“爬虫这东西...

  • Spider爬虫简介

    为什么要做爬虫? 都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数 http://inde...

  • 从零实现百度指数爬虫~

    想要爬取一个网站,肯定需要先对该网站的规则有所了解~现在开始看看百度指数的网站采用了什么渲染,以便我们对症下药才能...

  • 爬虫实战——三大指数之百度指数(下)

    (本人原创,谢绝转载) 咳咳。。豇豆哥昨天偷懒了,没给大家分享文章。。太累了 今天可就不能偷懒了。。继上一篇微信指...

  • 商业指数分析

    百度指数 尝试分析下百度指数的含义 从搜索指数的说明中可以大致看到该指数代表各关键词在百度搜索中的频次加权,简单理...

  • NodeJs + Phantomjs 简易爬虫

    NodeJs + Phantomjs 简易爬虫 爬虫是什么? 引用百度百科的说法是: 如何在NodeJs上搭建爬虫...

网友评论

      本文标题:爬虫——百度指数

      本文链接:https://www.haomeiwen.com/subject/vcgokxtx.html