相关动态
Node: Puppeteer + 图像识别 实现百度指数爬虫
2024-11-17 15:51

之前看过一篇脑洞大开的文章,介绍了各个大厂的前端反爬虫技巧,但也正如此文所说,没有100%的反爬虫方法,本文介绍一种简单的方法,来绕过所有这些前端反爬虫手段。

Node: Puppeteer + 图像识别 实现百度指数爬虫

下面的代码以百度指数为例,代码已经封装成一个百度指数爬虫node库: https://github.com/Coffcer/baidu-index-spider

note: 请勿滥用爬虫给他人添麻烦

观察百度指数的界面,指数数据是一个趋势图,当鼠标悬浮在某一天的时候,会触发两个请求,将结果显示在悬浮框里面

按照常规思路,我们先看下这个请求的内容

请求 1

请求 2

可以发现,百度指数实际上在前端做了一定的反爬虫策略。当鼠标移动到图表上时,会触发两个请求,一个请求返回一段html,一个请求返回一张生成的图片。html中并不包含实际数值,而是通过设置width和margin-left,来显示图片上的对应字符。并且请求参数上带有res、res1这种我们不知如何模拟的参数,所以用常规的模拟请求或者html爬取的方式,都很难爬到百度指数的数据。

怎么突破百度这种反爬虫方法呢,其实也很简单,就是完全不去管他是如何反爬虫的。我们只需模拟用户操作,将需要的数值截图下来,做图像识别就行。步骤大概是

  1. 模拟登录
  2. 打开指数页面
  3. 鼠标移动到指定日期
  4. 等待请求结束,截取数值部分的图片
  5. 图像识别得到值
  6. 循环第3~5步,就得到每一个日期对应的值

这种方法理论上能爬任何网站的内容,接下来我们来一步步实现爬虫,下面会用到的库

  • puppeteer 模拟浏览器操作
  • node-tesseract tesseract的封装,用来做图像识别
  • jimp 图片裁剪

Puppeteer是Google Chrome团队出品的Chrome自动化工具,用来控制Chrome执行命令。可以模拟用户操作,做自动化测试、爬虫等。用法非常简单,网上有不少入门教程,顺着本文看完也大概可以知道如何使用。

API文档: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md

安装

 
 

Puppeteer在安装时会自动下载Chromium,以确保可以正常运行。但是国内网络不一定能成功下载Chromium,如果下载失败,可以使用cnpm来安装,或者将下载地址改成淘宝的镜像,然后再安装

 
 

你也可以在安装时跳过Chromium下载,通过代码指定本机Chrome路径来运行

 
  
 

为版面整洁,下面只列出了主要部分,代码涉及到selector的部分都用了...代替,完整代码参看文章顶部的github仓库。

这里做的就是模拟用户操作,一步步点击和输入。没有处理登录验证码的情况,处理验证码又是另一个话题了,如果你在本机登录过百度,一般不需要验证码。

 
  
 

需要将页面滚动到趋势图的区域,然后移动鼠标到某个日期上,等待请求结束,tooltip显示数值,再截图保存图片。

 
  
 

计算数值的坐标,截图并用jimp对裁剪图片。

 
  
 

这里我们用Tesseract来做图像识别,Tesseracts是Google开源的一款OCR工具,用来识别图片中的文字,并且可以通过训练提高准确率。github上已经有一个简单的node封装: node-tesseract,需要你先安装Tesseract并设置到环境变量。

 
 

实际上未经训练的Tesseracts识别起来会有少数几个错误,比如把9开头的数字识别成`3,这里需要通过训练去提升Tesseracts的准确率,如果识别过程出现的问题都是一样的,也可以简单通过正则去修复这些问题。

实现了以上几点后,只需组合起来就可以封装成一个百度指数爬虫node库。当然还有许多优化的方法,比如批量爬取,指定天数爬取等,只要在这个基础上实现都不难了。

    以上就是本篇文章【Node: Puppeteer + 图像识别 实现百度指数爬虫】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/news/7132.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://sjzytwl.xhstdz.com/mobile/ , 查看更多   
最新文章
苹果手机开不开机如何解决,苹果手机开不开机是咋回事苹果手机如何开机「苹果手机开不开机如何解决,苹果手机开不开机是咋回事」
苹果手机开不开机怎么办苹果手机开不了机这种情况,还有可能是手机处于死机状态,也可以先尝试一下同时按住开机键开机键+HOME键
这么多年过去了,米家为啥还不能实现离线操作?小米手机闹钟在哪里设置「这么多年过去了,米家为啥还不能实现离线操作?」
这么多年过去了,米家为啥还不能实现离线操作?“ 小爱同学,打开空调 ”“ 小爱同学!,打开空调 ”“ 小爱同学???? ”这么
手机上的这些隐形参数 厂商可能不会告诉你隐形手机「手机上的这些隐形参数 厂商可能不会告诉你」
在文章正式开始之前,先问大家伙儿一个问题:在挑手机的时候,不知道各位主要会看哪些参数?像是芯片、屏幕、影像、内存、存储、
山西一男子高速上边开车边玩手机游戏被处罚开车玩手机「山西一男子高速上边开车边玩手机游戏被处罚」
  这名司机心真大!山西一男子高速上边开车边玩手机游戏被处罚   新华社太原11月26日电(记者王飞航)究竟是命重要,还是玩游
米忽悠派对最新版本 v1.0手机版派对手机「米忽悠派对最新版本 v1.0手机版」
米忽悠派对是一款以米哈游的游戏ip打造的全新派对游戏,在游戏中能够看到许多米哈游的不同游戏集合在一个游戏中,游戏玩法十分简
油电同智 全球同行,奇瑞汽车智能化战略发布会盛大开幕
3月18日,智能化战略发布会在安徽芜湖顺利召开。活动聚焦“油电同智 全球同行”,正式发布奇瑞集团智能化战略规划,并集中展示猎
投影仪如何通过手机投屏-实用教程手机怎么投屏到投影仪「投影仪如何通过手机投屏-实用教程」
第二步:开启手机投屏功能打开手机上的设置或者控制中心(不同手机可能位置不同),找到“投屏”或者“无线投屏”这样的选项并点
才发现手机蓝牙竟然有这么神奇的功能,你们都知道手机蓝牙的哪些作用呢?手机蓝牙有什么作用「才发现手机蓝牙竟然有这么神奇的功能,你们都知道手机蓝牙的哪些作用呢?」
提到手机蓝牙,大家能想到的它的功能是什么呢?不少人可能对手机蓝牙的作用还停留在以前,两个手机配对之后可以用来传输文件,这
全球最火的十大射击游戏推荐 好玩的射击游戏前十2023手机最真实的射击游戏「全球最火的十大射击游戏推荐 好玩的射击游戏前十2023」
现在手机上的射击游戏种类是很丰富的,不同题材的射击游戏给大家提供了不同的体验,射击游戏里的众多枪械可谓开拓了大家的眼界,
苹果发布iPhone8和iPhoneX 后者系第一代价格十倍苹果x手机多少钱「苹果发布iPhone8和iPhoneX 后者系第一代价格十倍」
  在苹果手机面世10周年之际,苹果公司12日发布iPhone 8和iPhone X等最新产品,以此向已故联合创始人史蒂夫?乔布斯致敬。