js 抓取页面数据
数据抓取
主要思路和原理
- 在根节点document中监听所有需要抓取的事件
- 在元素事件传递中,捕获阶段获取事件信息,进行埋点
- 通过getBoundingClientRect() 方法可获取元素的大小和位置
- 通过stopPropagation() 方法禁止事件继续传递,控制触发元素事件
- 在冒泡阶段获取数据,保存数据
- 通过settimeout异步执行数据统计获取,避免影响页面原有内容
相关知识点
基础代码
 // 冒泡阶段监听所有事件
   document.body.addEventListener('click', function (event) {
     // 抓取数据
     settimeout(getData(event));
   }, flase);//这里写flase是代表在冒泡阶段
   // 捕获阶段监听所有事件
   document.body.addEventListener('click', function (event) {
     // 是否为埋点模式
     if (!event.target.className.match(/\isSetting\b/)) {
       return;
     }
     // 这里禁止触发点击元素事件
     event.stopPropagation()
     // 是否已经埋点
     if (event.target.className.match(/\myclass\b/)) {
       settimeout(showDetail(event));
     }
     settimeout(newCanvas(event));
   }, true);//这里写true是代表在捕获阶段
   // 创建canvers,位置和大小
   function newCanvas(event) {
     var rect = event.target.getBoundingClientRect();
     var mycanvas = document.createElement("canvas");
     mycanvas.id = "mycanvas";
     mycanvas.className = "myclass";
     mycanvas.style.zIndex = 8;
     mycanvas.style.top = rect.top + "px";
     mycanvas.style.left = rect.left + "px";
     mycanvas.height = rect.height;
     mycanvas.width = rect.width;
     document.body.appendChild(mycanvas);
   }
   // 发送抓取数据
   function getData(event) {
     // 存储DOM相关数据,ajax发送数据
   }
   // 显示埋点信息
   function showDetail(event) {
     // 显示埋点的详细信息
   }
流程图

js 抓取页面数据的更多相关文章
- 爬虫抓取页面数据原理(php爬虫框架有很多 )
		爬虫抓取页面数据原理(php爬虫框架有很多 ) 一.总结 1.php爬虫框架有很多,包括很多傻瓜式的软件 2.照以前写过java爬虫的例子来看,真的非常简单,就是一个获取网页数据的类或者方法(这里的话 ... 
- 利用python抓取页面数据
		1.首先是安装python(注意python3.X和python2.X是不兼容的,我们最好用python3.X) 安装方法:安装python 2.安装成功后,再进行我们需要的插件安装.(这里我们需要用 ... 
- node.js 抓取网页数据
		var $ = require('jquery'); var request = require('request'); request({ url: 'http:\\www.baidu.com',/ ... 
- java  Jsoup 抓取页面数据
		List<ImageBean> imgList = new ArrayList<ImageBean>(); ImageBean image = null; String ima ... 
- Node.js的学习--使用cheerio抓取网页数据
		打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ... 
- node.js抓取数据(fake小爬虫)
		在node.js中,有了 cheerio 模块.request 模块,抓取特定URL页面的数据已经非常方便. 一个简单的就如下 var request = require('request'); va ... 
- 用PHP抓取页面并分析
		在做抓取前,记得把php.ini中的max_execution_time设置的大点,不然会报错的. 
- 基于puppeteer模拟登录抓取页面
		关于热图 在网站分析行业中,网站热图能够很好的反应用户在网站的操作行为,具体分析用户的喜好,对网站进行针对性的优化,一个热图的例子(来源于ptengine) 上图中能很清晰的看到用户关注点在那,我们不 ... 
- Java语言实现通过Ajax抓取后台数据及图片
		1.Java语言实现通过Ajax抓取后台数据及图片信息 1.1数据库设计: create table picture( pic_id number not null, pic_name )not nu ... 
随机推荐
- 洛谷 P2324 [SCOI2005]骑士精神
			题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,*表示空位.两组数据之间没有空行. 输出格式 ... 
- mysql数据库操作手册
			1 存储过程的写法 以下是一个带有入参的存储过程模板, #删除方案-存储过程 CREATE PROCEDURE procPersonAppointRecallPlanByPlanUuidDelet ... 
- JS编程规范指南
			原文:github.com/ryanmcdermott/clean-code-javascript 说明:本文翻译自 github 上的一个项目,只取部分精华. 一.变量 用有意义且常用的单词命名 / ... 
- 常用的ement语法
			缩写语法: 介绍:Emmet 使用类似于 CSS 选择器的语法描述元素在生成的文档树中的位置及其属性. 声明:第一次写博客大家多多关照,如有错误或者需要补充的请到评论里留言,谢谢大家! 快速生成htm ... 
- servlet实现简单的反向代理
			项目基于Spring 须要的依赖为: <dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> < ... 
- 禁止按键F5和禁止鼠标右键菜单 js代码
			<script language="javascript"> //禁止按键F5 document.onkeydown = function(e){ e = window ... 
- 【转】LDA-linear discriminant analysis
			分类问题也可以用降维来理解,比如一个D维的数据点x,我们可以采用下面的映射进行线性的降维, y=θTx 在计算出y后,就可以选择一个阈值h,来进行分类.正如我们在前面的PCA模型中看到的,降维会有信息 ... 
- Linux 命令、配置文件及操作
			Linux 命令.配置文件及操作 命令 命令 参数 说明 A alias.unalias 命令别名 B C cat 查看文件内容 cd 切换目录 chown 修改拥有着 chgrp 修改所属组 chm ... 
- 201621123080《Java程序设计》第9周学习总结
			作业09-集合与泛型 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实 ... 
- 896. Monotonic Array
			An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ... 
