爬虫实战 手把手教你批量抓取百度指数

 

百度指数抓取,不要错过哦 ~...



皮卡丘联合爬虫业界大牛FastGets整理一系列文章,介绍python爬虫基础知识、大牛多年反爬经验,有难度网站抓取实战、爬虫系统架构设计、安卓app逆向分析。帮助小白入门,初级工程师成为资深工程师,大神回顾。大家有任何问题可留言交流,欢迎转发分享。



一、百度指数链接分析

百度指数是需要先登陆的,我们先登陆,然后搜索“爬虫”这个词,如下图,可以看到百度指数的曲线图。



我们看爬虫的百度指数链接

https://index.baidu.com/?tpl=trend&word=%C5%C0%B3%E6

这其实是“爬虫”经过gbk编码,然后在经过编码后得到,如下代码:



二、百度指数登陆

在我们没有登陆百度的情况下,在浏览器中打开链接

https://index.baidu.com/?tpl=trend&word=%C5%C0%B3%E6

会弹出叫我们登陆的表单,如下图:



登陆次数多了,会出现验证码:



读者想了解百度登陆的详细过程,可以参考上期文章【爬虫登陆模块介绍】,里面详细介绍了百度登陆过程。

由于百度指数需要登陆后才能访问,所以我们在打开每个百度指数页面后,首先需要判断是否需要登陆,需要的话,我们进行登陆操作,下面是登陆过程代码,代码旁边附有注释。











在批量抓取时,百度指数存在较为严重的反爬,我们在登陆后,访问过多的百度指数页面时,也会出现验证码,因此我们在打开页面后,需要先判断是否有验证码,有的话,需要先识别,代码如下:



三、获取百度指数



百度指数实际值,是图片悬浮的方式展示,获取较为麻烦,如下图:



百度指数的曲线画在图上,其必定有每个点在图上的坐标值,我们根据图上的坐标位置,以及纵坐标的数字,可以大致计算出每天的百度指数,如下图:



我们需要先从这些数字中解析出每个点在图上的位置值,然后识别出纵坐标数字,即可大概计算出每个点的实际值。下面代码:打开“爬虫”的百度指数页面后,先判断是否需要登陆,是否需要验证,都通过后,我们再来解析和识别。







下面是纵坐标识别的函数,笔者这里用到了pytesseract 包,读者如果不熟悉,可以百度下安装方法和简单的使用方法。







下面是百度指数抓取程序入口:



读者可以按照笔者的注释,自己写一遍代码,即可学会百度指数抓取全过程,完整的代码读者也可以到这里查看:

https://github.com/piweidong/CrawlArticles/blob/master/article6/baidu_index.py

如果读者想研究百度指数抓取的其他方法,可以到github上去搜索baiduindx,然后去看看这些人写的代码,如下图:

【往期精彩文章】

1. 爬虫抓取模块实战

2. 网页源码解析模块实战

3. 代理ip模块实战

4. python3 + selenium + chrome实战

5. 爬虫登陆模块实战

喜欢的话,点个赞呗!


    关注 数据挖掘


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册