puppeteer 爬取大众点评

2024-01-27 23:30
文章标签 大众 爬取 puppeteer 点评

本文主要是介绍puppeteer 爬取大众点评,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在研究node的爬虫框架,这里作为学习的记录,实现通过puppeteer来爬取大众点评的信息
大众点评
先看一下最终的爬取效果:
demo
首先需要安装puppeteer插件
安装的方法网上一堆,我也不多讲了,给一个我这个实例对应的安装地址(我一直安装失败,看了这个文章之后才可以运行…QAQ)
Puppeteer 安装失败的解决办法
import
这里我额外引入了mysqlrequest(这个没用到),对应的安装方法:
npm install mysql request --save

下面我们讲下实现的原理
在爬虫启动浏览器访问大众点评后,有时候会出现一个验证的
验证
然而我测试的时候,这个验证滑了之后还是不给进去
验证
感觉被检测出是爬虫然后就不给访问的样子,具体什么原因我也不清楚,只是发现
有时候就可以直接进入到页面中,需要多试几次,emmmmmmm,知道具体原因的,可以评论区留言一下,谢谢
进入到页面之后,正常的那种获取文本信息这些应该很容易搞定的,也可以去下载一下我的代码,大部分注释都有写,可以去学习学习,链接地址我会放到最下面
最主要的是大众点评有反爬虫机制,会将文字进行替换
比如:
大众点评
我们来读取一下这个358点评数的信息(F12选的)
大众点评
在F12后的审查元素界面,可以看的到 358这三个数字被替换为了<svgmtsi>标签,不仅如此其他一些重要的信息全部被替换为了<svgmtsi>标签,目的就是不让新手爬取…emmmm
博主觉得这个问题可以用两种方法解决:
1、ocr去识别文字
2、解析svg的信息 (博主用的就是这个方法)
因为博主用的是解析信息的方法,下面会具体讲讲
大众点评
我们选中一个<svgmtsi>只会,可以看到他引用的对应的样式(这里是shopNum),然后鼠标放在样式的地址上,有一个链接,复制链接地址并打开它
css
打开之后,大概就是这样的,这时候我们去搜索之前的样式shopNum,然后会有3个匹配值,复制第一个匹配值后面的地址
地址
然后在新页面中打开,就会提示一个下载信息
下载字体
这里下载的信息就是一个文字包,你可能打不开,可以用百度的文字编辑打开
地址为:http://fontstore.baidu.com/static/editor/index.html
百度文字编辑
将文件直接拖拽进去也可以打开的,打开之后就是这样的情况,可以看到数字对应的密匙信息吧
来核实一下对不对,比如我去取一下之前358条点评中的数字3(在审查元素中只能看到类似的信息)
在这里插入图片描述
在config里输入:

document.querySelectorAll("#shop-all-list li")[0].querySelector(".review-num").querySelector("b").querySelectorAll("svgmtsi")[0].innerText.charCodeAt(0).toString(16)

获取到对应的e8ec信息
与之前文字库中作对比,可以发现
3
数字3对应的刚好是 unie8ec
因此我们就可以做一个数字匹配的列表来(虽然这个列表是固定的,每次变了规则还要对着的变化,但是可以实现读取信息)
list
根据获取出来的内容对应着匹配一下数组列表,然后就可以知道真实的数字内容了
(文字的解析方式更复杂,不过也可以用这种方式实现,就是文字太多了…)
对于具体的内容获取,元素选择什么的可以参考下面的api
puppeteer系列教程
官方api

后续的完整代码我会提供链接地址进行下载(推荐去下面的github地址下载,不要积分的,希望拉取的时候可以star一下,谢谢)
完整代码的下载地址
我对于生成的信息存到了数据库以及本地的demo.json中

如果要运行爬虫,可以直接在终端运行 node demos.js
(别告诉你不知道怎么启动。。。百度查查node运行js文件吧)

爬虫运行时的图片
爬虫
有问题直接留言,我天天看!!!

如果对你有帮助,希望可以去github帮忙点个Star 谢谢了QAQ 你的Star对我十分重要
↓↓↓GitHub地址↓↓↓
快来点一下Stat

这篇关于puppeteer 爬取大众点评的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651813

相关文章

0基础学习爬虫系列:网页内容爬取

1.背景 今天我们来实现,监控网站最新数据爬虫。 在信息爆炸的年代,能够有一个爬虫帮你,将你感兴趣的最新消息推送给你,能够帮你节约非常多时间,同时确保不会miss重要信息。 爬虫应用场景: 应用场景主要功能数据来源示例使用目的搜索引擎优化 (SEO)分析关键词密度、外部链接质量等网站元数据、链接提升网站在搜索引擎中的排名市场研究收集竞品信息、价格比较电商网站、行业报告制定更有效的市场策略舆情

python网络爬虫(五)——爬取天气预报

1.注册高德天气key   点击高德天气,然后按照开发者文档完成key注册;作为爬虫练习项目之一。从高德地图json数据接口获取天气,可以获取某省的所有城市天气,高德地图的这个接口还能获取县城的天气。其天气查询API服务地址为https://restapi.amap.com/v3/weather/weatherInfo?parameters,若要获取某城市的天气推荐 2.安装MongoDB

黑马点评11——UV统计-HyperLogLog

文章目录 HyperLogLog的用法测试百万数据的统计 HyperLogLog的用法 简直就是天生用于UV统计的,太爽了! 测试百万数据的统计 /*** info memory* 2107168* 插入1000000条数据后,内存的变化* 2121552*/@Testvoid testHyperLogLog(){String[] values = new Stri

黑马点评10——用户签到-BitMap数据结构

文章目录 BitMap用法签到功能签到统计 BitMap用法 其实数据库完全可以实现签到功能 但签到数据比较大,借鉴签到卡的思想 布隆过滤器也是使用BitMap实现的. 签到功能 因为是当前用户的当天,所以保存需要的年月日不需要参数,可以直接获取。 @Overridepublic Result sign() {// 1. 获取当前登录用户Long userId

【截图服务 +打包】pkg打包 puppeteer

目录 最后结论 遇到的问题与解决 版本匹配问题 参考文档 最后结论 pkg -t win --public ./screenshots.js --output ./dist/screen.exe 服务启动: postman调用 :  遇到的问题与解决 版本匹配问题 pkg 这里说的是v3.5,实际装的是5.8.1,没有关系;可以向下兼容。 但node

【Puppeteer】‘left‘ is already pressed, ‘${button}‘ is already pressed 的解决办法

解决过程如下 这是我原来的代码,不管我怎么修改,都一直会出现 'left' is already pressed 这个错误 找了很多资料 搜了 很多网站都 找不到解决办法 async function dragAndDrop(page, canvasSelector, startX, startY, endX, endY) {const startCoordinates = await ge

【python】—— Python爬虫实战:爬取珠海市2011-2023年天气数据并保存为CSV文件

目录 目标 准备工作 爬取数据的开始时间和结束时间 爬取数据并解析 将数据转换为DataFrame并保存为CSV文件         本文将介绍如何使用Python编写一个简单的爬虫程序,以爬取珠海市2011年至2023年的天气数据,并将这些数据保存为CSV文件。我们将涉及到以下知识点: 使用requests库发送HTTP请求使用lxml库解析HTML文档使用dateti

scrapy 设置爬取深度 (七)

通过在settings.py中设置DEPTH_LIMIT的值可以限制爬取深度,这个深度是与start_urls中定义url的相对值。也就是相对url的深度。例如定义url为:http://www.domz.com/game/,DEPTH_LIMIT=1那么限制爬取的只能是此url下一级的网页。深度大于设置值的将被ignore。       如图:

scrapy自动多网页爬取CrawlSpider类(五)

一.目的。 自动多网页爬取,这里引出CrawlSpider类,使用更简单方式实现自动爬取。   二.热身。 1.CrawlSpider (1)概念与作用: 它是Spider的派生类,首先在说下Spider,它是所有爬虫的基类,对于它的设计原则是只爬取start_url列表中的网页,而从爬取的网页中获取link并继续爬取的工作CrawlSpider类更适合。 ࿰

Scrapy ——自动多网页爬取(抓取某人博客所有文章)(四)

首先创建project:   [python]  view plain  copy     转存失败重新上传取消<