网页JS自动化脚本(八)使用网页专属数据库indexedDB进行数据收集

news2024/12/23 0:05:05
  • 我们在网页上进行的活动,往往都需要进行收集一些简单的数据,但是因为浏览器的安全原因,浏览器基本上是无法与本地的操作系统直接产生数据交互的,这本来就是一个由于安全问题生产的无解问题,在浏览器里面是内置了几种数据库的,其中一种就是indexedDB,可以用来储存一些非常小的数据字段, 我们按下F12打开可以看到,如下图就是我这一次想说的是一种直接利用当前网址的数据库的手段.
    请添加图片描述
  • 之所以说是当前网址,是因为indexedDB数据库本来就是为每个不同的网址分配的,它实际上就是服务器在用户电脑上的临时用地,也就相当于是租借地,有点像香港和澳门的性质,这块地被划给了服务器可以用来储存一些数据,操作的权限完全归这个网页所有
  • 所以我们可以利用这个专用数据库来储存固定页的数据,这次做一个收集热搜的功能,也就是每次打开页面,JS就会自动收集热搜词条,从上面的截图中,我们可以看到热搜中的一条被添加进了右侧的数据库当中,顶部就是一个弹窗的功能显示当前的数据库
  • 可以看到右侧的数据库中左侧#号是序号,而第二竖列是Key也就是关键词排序,右侧 value就是数据的具体内容了
  • 数据库的结构:indexedDB------>ShuJuKu----->BiaoGe 是这样子的三级关系,数据库----库名----表格名, 库名用来关联网址, 表格名用来区分同一个网址中的不同数据,也就是可以新建多个功能不同的数据表.
  • 下面上代码:
// ==UserScript==
// @name        New script - baidu.com
// @namespace   Violentmonkey Scripts
// @match       https://www.baidu.com/
// @grant       none
// @version     1.0
// @author      -
// @description 2023/5/29 下午2:12:47
// ==/UserScript==

var time,reSou;//时间和热搜
var bd;//数据库
var show="";//要显示的内容

window.onload=function(){
  var request = window.indexedDB.open('ShuJuKu',1);
  
  //更新数据库函数
  request.onupgradeneeded = function (event){
    db = event.target.result;
    var objectStore;
    if(!db.objectStoreNames.contains('BiaoGe')){
      objectStore = db.createObjectStore('BiaoGe',{keyPath:'TIME'});
      objectStore.createIndex('reSou','RS',{unique:false});
      alert('BiaoGe 首次创建成功');
    }
  }
  
  //打开数据库函数
  request.onsuccess = function (event) {
    db = request.result;
    show +='ShuJuKu  数据库打开成功\n';
    time=new Date().toLocaleString();  //获取当前时间
    reSou=document.querySelector("i.title-content-top-icon+span").innerText;  //获取热搜信息
    //在表格当中添加这两个数据
    db.transaction(['BiaoGe'],'readwrite').objectStore('BiaoGe').add({
      TIME:time,  RS: reSou
    });
    //执行游标函数收集所有的数据到show内
    readAll();
    //延时展示因为要等待数据库遍历函数执行完毕
    setTimeout(function(){
      alert(show);
    },500);
  }
  
  //游标遍历数据库
  function readAll(){
    var objectStore=db.transaction(['BiaoGe']).objectStore('BiaoGe');
    //游标成功打函数
    objectStore.openCursor().onsuccess=function(event){
      var item=event.target.result;
      if(show){
	     show += item.value.TIME + item.value.RS + "\n";
	     item.continue(); //继续执行(没有这行代码只能收集数据库的第一行信息)
      }
    }
  }
}
  • 我们先来看var request = window.indexedDB.open('ShuJuKu',1);这一句就是让浏览器直接打开一个名为ShuJuKu的数据库,后面的1就是数据库版本为1,执行这一行就会有多个结果,其中一个结果就是触发onupgradeneeded数据库更新,还有就是onsuccess数据库成功打开,那我们第一次访问的时候里面是没有这个数据库的,那也就是说版本为0或者是无效数据NULL,所以第一次就会触发onupgradeneeded这个函数,这个函数也是我们一定要实现的一个函数
  • 下面我们紧接着就来实现这个onupgradeneeded函数,重写的时候要带上event,因为主程序在调用的时候会传这个参数进来,db = event.target.result 从这一句获取一个数据库对象, 然后在db.objectStoreNames会返回数据表的数组,然后执行.contains('BiaoGe')判断内部是否个名称的表
  • 如果找不到这个表那就新建这个表db.createObjectStore('BiaoGe',{keyPath:'TIME'});里面的{keyPath:‘TIME’}用来确定关键排序关键词用的,主表就会以这个数据排序
  • 如果还有想用来配合查找的数据,就可以添加一个排序关键词objectStore.createIndex('reSou','RS',{unique:false});而里面的unique:false就是确定这个值在这一张大表里面是否可以重复,如果我们收集的信息男或者女那肯定会有重复对不对,如果收集的是时间,那肯定是没有重复的,在加上了这一行代码之后,我们的表格里就会多出一张以reSou为关键词的表,方便我们后期查找数据的时候使用这个数据进行定位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/584484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多主题插件上线!开源的 API 管理工具居然这么有意思!

之前我一直在用的开源API 管理工具——Postcat 最近上线了新的主题插件,真的有意思! 之前就用用户提 issue 没想到终于安排上了,给这个项目点赞! 挑几款我偏好的主题插件,简单看看 第一款,【VSCode 主题】&…

鸿蒙Hi3861学习二十-编译构造

一、简介 在使用编译构造子系统前,应了解如下基本概念: 子系统 子系统是一个逻辑概念,它由一个或多个具体的组件构成、OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、架构层和应用层。系统功能按照…

电商用户行为分析__求前3点击量

测试代码 package Data_textimport org.apache.flink.streaming.api.TimeCharacteristic import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor import org.apache.flink.streaming.api.scala._ import org.apache.flink.st…

KWin事件总结和相关类介绍

KWin事件总结和相关类介绍 目录 KWin事件总结和相关类介绍 1、事件相关模块 1.1 事件类型 1.2 事件管理 1.3 事件过滤器 2、KWin其他模块整理 2.1 窗口 2.2 Item 2.3 scene 3、事件传递流程 3.1 事件整体流程 3.2 事件传递时序图 4、事件流程样例 4.1 鼠标拖动修…

英伟达发布 532.03 驱动,为新游戏和新显卡带来支持

继英伟达 RTX 4060系列显卡陆续发售后,又发布了 GeForce Game Ready 532.03 WHQL 驱动,驱动人生整理了一下NVIDIA GeForce Game Ready 532.03 WHQL 驱动带来的支持与优化。 GeForce Game Ready 532.03 WHQL 驱动主要同步支持 RTX 4060 Ti 8G 显卡&#…

Hadoop3.1.4分布式搭建

Hadoop3.1.4分布式搭建 1. 基础环境准备 1.1 实验网络规划 hostnameip addrroleotherk8s-m13310.10.10.133NameNode, DataNode, NodeManageerk8s-m13410.10.10.134SecondaryNameNode, DataNode, NodeManageerk8s-m13510.10.10.135ResourceManager, DataNode, NodeManageerk8…

Java 多线程基础

文章目录 Java 多线程基础一、相关概念1. 程序、进程和线程2. 线程调度3. 并行与并发 二、线程的创建1. 继承 Thread 类2. 实现 Runnable 接口3. 实现 Callable 接口4. 线程池 三、Thread 类常用方法1. 构造方法2. 常用方法3. 其他方法 四、线程的生命周期五、线程同步1. 线程安…

Serverless 是什么?

文章目录 Serverless 是什么?Serverless 的前世今生面临挑战以应用为中心,无需运营基础架构自动伸缩为价值付费内置高可用和高安全 Serverless 行业及应用场景IT 自动化数据处理微服务架构IoT 后端系统游戏 Serverless 解决方案推荐SaaS Boot适合客户方案…

代码审查 idea

目录 文档 alibaba java coding guidelines 插件下载 Upsource 文档 https://download.csdn.net/download/qq_41169544/87545171https://download.csdn.net/download/qq_41169544/87545171 alibaba java coding guidelines 插件下载 Alibaba Java Coding Guidelines安装使用…

【珍藏版】SolVES模型的生态系统服务功能社会价值评估及拓展

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(Millennium Ecosystem Asse…

OSI(Open System Interconnect)开放系统互联参考模型-7层模型(改版)

OSI(Open System Interconnect)开放系统互联参考模型-7层模型 1. OSI七层模型1.1 基本概念1.2 七层模型的划分1.3 数据传输过程 2. TCP/IP四层模型2.1 基本概念2.2 四层模型的划分2.3 数据传输过程 3. 涉及的协议及概念3.1 MTU1. 概念2. 关于mtu取值3. 修…

Anchor Free目标检测方法

faster rcnn anchor:尺寸比例固定 yolo anchor尺寸确定:通过聚类 Anchor Free方法 anchor的简单理解:在特征图上的模板,含有的信息为检测框的大小和尺度 Anchor based 方法小结 Faster rcnn(左上) yolo v3(右上) ssd (中) re…

python爬虫学习简记(更新中)

页面结构的简单认识 如图是我们在pycharm中创建一个HEML文件后所看到的内容 这里我们需要认识的是上图的代码结构,即html标签包含了head标签与body标签 table标签 table标签代表了一个网页页面中的表格,其包含了行和列,其中行标签我们使用tr标…

1.场景设计题

系统设计 文章目录 系统设计一、缓存设计1、Redis 缓存Key回收策略?1.1、Redis缓存Key过期策略1.2、Redis缓存Key回收策略 2、Redis缓存击穿如何解决?2.1、导致Redis缓存穿透原因有那些? 3、Redis缓存雪崩如何解决?4、Redis缓存击…

笛卡尔心形线

目录 一、前言 二、使用 EasyX 绘制笛卡尔心形线 一、前言 "谁能告诉我,这是什么?" "爱心呗" "哼,爱心,我们叫它心形线。关于心形线呢,还有一个美丽的故事,是跟笛卡尔有关。…

RabbitMQ六种工作模式01

01: Work Queue工作队列模式 //接口所有的属性都是静态常量属性 public interface RabbitContent {//队列String QEUEU_HELLO "hello";String QUEUE_WORKING "working";String QUEUE_BAIDU "baidu";String QUEUE_SINA "sina";//交换机…

【操作系统笔记】南京大学jyy老师

系列综述: 💞目的:本系列是个人整理为了操作系统学习,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于南京大学操作系统jyy老师课程进行的,每个知识点的修正…

Windows系统内核溢出漏洞提权

目录 Windows内核溢出漏洞原理 溢出漏洞简介 什么是缓冲区 缓冲区溢出 缓冲区溢出目的 Windows内核溢出漏洞利用流程 提权实战思路 手工提权测试 辅助提权 EXP如何寻找 使用MSF提权 关于提权时可能遇到的问题 如果提权的时候发现无法执行命令的话,可以上…

零售EDI:如何与Transgourmet 建立EDI连接?

Transgourmet是一家总部位于法国的批发和供应商公司,为酒店、餐馆和快餐行业提供食品和非食品产品。在欧洲拥有广泛的市场覆盖,经营范围涵盖法国、德国、奥地利、波兰、罗马尼亚和瑞士等国家。 Transgourmet EDI 需求分析 1.传输协议 Transgourmet选择…

一文看懂企业性能测试,指标解析+代码演示,简洁易懂!

目录 前言: 一、性能测试流程简介 二、性能测试指标分析 三、性能测试代码演示 四、性能测试结论 五、总结 前言: 性能测试在企业应用中是非常重要的一环,它可以帮助企业对自身的应用和系统进行全面评估,提高其性能、稳定性…