[发明专利]一种基于puppeteer的网站数据收集方法在审
申请号: | 201910773517.7 | 申请日: | 2019-08-21 |
公开(公告)号: | CN110569414A | 公开(公告)日: | 2019-12-13 |
发明(设计)人: | 曹特磊 | 申请(专利权)人: | 时趣互动(北京)科技有限公司 |
主分类号: | G06F16/951 | 分类号: | G06F16/951;G06F9/4401;G06F9/54 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100124 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 抓取 目标网站 系统资源占用 分布式部署 整体稳定性 独立数据 获取数据 目标数据 内部数据 网络服务 网站数据 有效信息 预设事件 加锁 解锁 页面 服务器 存储 进程 渲染 部署 | ||
本发明提供了一种基于puppeteer的网站数据收集方法,在puppeteer中加载目标网站,通过多个独立数据爬虫子进程进行内部数据抓取,每个数据爬虫子进程包括如下步骤:步骤1,获取数据抓取任务,并对抓取任务加锁;步骤2,使用puppeteer打开目标网站,在预设事件发生后,提取目标数据;步骤3,存储抓取的数据,解锁并标志抓取任务为完成。本发明可以直接拿到渲染后的页面,获取到全部有效信息。可以运行于无视图模式,可以同时运行多个实例,且系统资源占用低,可以分布式部署,整体稳定性和抓取效率都非常高,可以部署在常用的linux系统的服务器上,可以作为service提供抓取的网络服务。
技术领域
本发明属于网站数据收集领域,具体涉及一种基于puppeteer的网站数据收集方法。
背景技术
普通网站数据获取,是通过爬虫获取网站url所对应的http请求,并解析http请求的结果。普通爬虫可以爬取传统网页内容。但目前使用大部分网站,是使用ajax来获取内容,通过JavaScript来渲染页面。普通网页爬虫无法获得有效数据,或者只能获得部分数据。
有少部分较为先进的获取方法是通过selenium来打开游览器,并通过元素定位的方位,获取网页内容。Selenium本身是测试框架,必须运行于有视图的操作系统上,无法部署于常用的linux服务器上。所以无法做到分布式部署,稳定性和抓取效率都非常差,无法作为service提供抓取服务。
发明内容
本发明的目的是提供一种基于puppeteer的网站数据收集方法,以解决上述技术问题。
本发明提供了一种基于puppeteer的网站数据收集方法,在puppeteer中加载目标网站,通过多个独立数据爬虫子进程进行内部数据抓取,每个数据爬虫子进程包括如下步骤:
步骤1,获取数据抓取任务,并对抓取任务加锁;
步骤2,使用puppeteer打开目标网站,在预设事件发生后,提取目标数据;
步骤3,存储抓取的数据,解锁并标志抓取任务为完成。
进一步地,所述步骤1包括:
设置一个定时触发器,每隔1分钟,去任务表中查询是否有尚未抓取的数据任务;如果存在未抓取的数据任务,对此任务加锁,以防止其他的进程重复执行同一个抓取任务,然后唤起并调用数据抓取模块;若任务表中查询不到任务,此进程进入休眠,等待定时触发器的下一次唤醒。
进一步地,所述步骤2包括:
在抓取模块被唤醒之后,从抓取任务内获取抓取的任务类型,并通过任务类别,确定目标网站url。
抓取模块通过puppeteer启动chromium,打开目标网站url;
在chromium打开目标网站url时,监听以下事件:http请求发出、http请求返回内容、页面加载完成、页面加载失败;
设置一个或多个数据抓取脚本,将抓取脚本与所述事件中的一种或多种关联,在特定事件发生时,通过抓取脚本调用puppeteer抓取数据。
进一步地,所述步骤3包括:
对数据内容做解析,然后校验数据内容是否合法;若数据内容不合法,任务状态设置为异常,并进入任务池,等待数据抓取的重试;
若数据内容合法,做数据内容的完成性校验;若数据不完整,任务状态设置为待抓取,等待任务数据的继续抓取;
若数据内容完成,将数据推入消息队列;同时任务状态设置为完成。
与现有技术相比本发明的有益效果是:
1)本发明可以直接拿到渲染后的页面,获取到全部有效信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于时趣互动(北京)科技有限公司,未经时趣互动(北京)科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910773517.7/2.html,转载请声明来源钻瓜专利网。