百度指数抓取-趋势截图+估算方法
来源:互联网 发布:时尚杂志知乎 编辑:程序博客网 时间:2024/05/22 15:38
十一在家陪孩子,过去一年,因为百度指数抓取那篇文章,很多人添加我的QQ询问百度指数抓取的事情,趁着有点闲心,就把批量全自动抓取趋势给做了。这次改用Python了,屈屈200行代码,搞定登录,查询,截图保存,识别,差值估算。现在程序可以全自动抓取一个词最近三十天的百度指数趋势,采用的预估模式。
要进一步扩展到多词,更细的时间力度,都很容易。
1. 使用selenium + chromedriver来获取百度指数的页面,这里有个坑,chromedriver每次都是全新的配置访问,每次使用百度指数的都需要输入用户名密码和验证码,没有验证码还好,有了验证码,为了实现全自动,chromedriver启动需要每次指定同一个用户数据目录,这样,登录一次,以后就不需要登陆了,直接启动chrome就可以直接访问了。
这里的核心代码是
options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=C:\\SomeWhere")
browser = webdriver.Chrome(chrome_options=options)
2. 无论是估算还是精确计算,都需要用到selenium的截图+tesseract的ocr。截图很容易。OCR会遇到一些麻烦
OCR我遇到的问题是,百度的数字,直接截图,然后ocr
pytesseract.image_to_string(img, lang="eng", config="-psm 7 baiduidx")
总是分不清5和6,0也经常识别不出来。识别率远低于50%,基本不可用。
(baiduidx是我自己仿照digits写的配置,只保留数字部分。)
经过多次尝试分析,百度的数字是一个像素粗细,5和6非常接近,只是左边一个像素的差别,因此OCR识别有困难。解决方案就是使用PIL对图形进行放大,灰度化,二值化,然后识别率100%
3. 预估的方法其实比较简单,就是找到右侧的7个坐标,自动识别,从而确定图像区域对应的最大值和最小值。找曲线,就按照固定的颜色找就行,根据曲线所在Y轴像素坐标,插值计算出对应的百度指数,大概有个1%左右的误差,其实百度指数也不是那么精确地,也是统计估算。
4. 下次有空了,再把精确识别也做了,基本思路有了,就是selenium模拟鼠标操作,然后从div里找到显示的文字,截图,然后ocr。 (百度用的一张数字打碎的图片做css背景,然后用css坐标来拼这个数字,截图+OCR是最有效的了)
不把代码贴上来,主要是防止太多人抓取百度,导致百度指数再次升级,使得自动抓取又要维护,又麻烦。愿意交流的欢迎加QQ齐齐死要久而吧QQ
0 0
- 百度指数抓取-趋势截图+估算方法
- 百度指数抓取思路
- Google趋势VS百度指数
- 爬虫抓取百度指数思路总结
- 【python 百度指数抓取】python 模拟登陆百度指数,图像识别百度指数
- 从百度指数搜索对比关键字流行趋势
- 百度指数
- 百度指数
- 解读提升百度权重-刷百度指数的方法
- 估算方法
- 百度指数更新邀请
- 百度指数爬去
- 毕业论文 百度指数采集
- ILI百度指数
- 百度百家号指数介绍
- 百度指数、百度快照、百度收录
- 工作指数趋势 Job Index Trend
- 工作指数趋势 Job Index Trend
- 排序算法
- 欢迎使用CSDN-markdown编辑器
- 【SQL】一条查询中统计同一字段不同记录值数量(频数统计)的写法
- 【验证码一】验证码Demo
- 关于函数传参问题自己的看法
- 百度指数抓取-趋势截图+估算方法
- The Rotation Game uva1343
- word2vec 中的数学原理详解
- [LeetCode]230. Kth Smallest Element in a BST
- 腾讯云服务器win2008系统搭建VPN
- LNK2038 RuntimeLibrary 不匹配的解决
- C#中不同格式数据校验的正则表达式
- 算法导论第八章思考题-c++
- 【验证码二】使用验证码