JS自动化获取网站信息开发说明

一、自动获取信息的必要性

1. 提高效率与节省时间

  • 批量处理:自动化可以快速抓取大量数据,比人工手动操作快得多。

  • 24/7 运行:自动化工具可以全天候工作,不受时间限制。

  • 减少重复劳动:避免人工反复执行相同的任务,提高生产力。

2. 数据驱动决策

  • 实时监控:自动化爬虫可以持续跟踪价格、新闻、股票等信息,帮助企业和个人快速做出决策。

  • 市场分析:电商、金融等行业依赖数据抓取来分析竞争对手、行业趋势等。

  • 舆情监控:政府和企业可以通过自动化抓取社交媒体、新闻网站等,了解公众舆论。

3. 商业智能与竞争分析

  • 竞品分析:企业可以自动化抓取竞争对手的产品、价格、评论等信息,优化自身策略。

  • 价格监控:电商平台(如亚马逊、淘宝)可以利用爬虫动态调整定价策略。

4. 科研与学术研究

  • 数据收集:研究人员可以自动化抓取公开数据集、论文、专利等信息,加速研究进程。

  • 文本挖掘:自然语言处理(NLP)需要大量文本数据,自动化抓取能提供语料库。

5. 个性化推荐与内容聚合

  • 新闻聚合:如今日头条、Google News 等平台依赖自动化抓取整合内容。

  • 个性化服务:通过分析用户行为数据(如购物、阅读习惯),提供定制化推荐。

6. SEO 与网络优化

  • 搜索引擎索引:Google、百度等依赖爬虫(如Googlebot)建立网页索引。

  • 网站优化:企业可以通过爬虫分析搜索引擎排名,优化SEO策略。

7. 避免人为错误

  • 人工操作容易出错(如复制错误、遗漏数据),而自动化工具能保证数据准确性。

8. 合规与风控

  • 金融监管:自动化抓取公开的财报、公告,辅助审计和风险管理。

  • 反欺诈:银行和保险公司可以通过数据抓取识别异常交易或虚假信息。

9. 人工智能与机器学习

  • 训练AI模型需要大量数据,自动化抓取能提供结构化数据集(如图像、文本、视频)。

10. 动态数据需求

  • 某些数据(如天气、交通、加密货币价格)需要实时更新,人工无法高效完成。

 二、实现的关键步骤:

Z_Tampermonkey脚本宿主插件(百度搜索可以下载)

AIMain.html

<!DOCTYPE html>
<!--【1】Html文件读取本地Excel文件(使用场景比如做输入查询)-->
<html>
<div style="text-align: center;margin-top: 300px;"><input type="file" id="input-excel" accept=".xls,.xlsx"/><button onclick="START()"style="background-color: #4CAF50; color: white; padding: 15px 32px; text-align: center;text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px;cursor: pointer;">执行脚本文件</button>
</div>
</html><script src="./xlsx/xlsx.js" charset="utf-8"></script>
<script>function START() {const input = document.getElementById('input-excel');const file = input.files[0];if (!file) {alert('请选择一个Excel文件');return;}const reader = new FileReader();reader.onload = function (e) {const data = e.target.result;const workbook = XLSX.read(data, {type: 'array'});/*【2】指定读取Excel的第一个Sheet*/const sheetName = workbook.SheetNames[0];const sheet = workbook.Sheets[sheetName];const jsonData = XLSX.utils.sheet_to_json(sheet);/*【3】把Excel内容读取为JSON对象,也可以打印JSON字符串,*/console.log(JSON.stringify(jsonData));/*【4】定义一个公司名称集合,单独放到一个companyList*/let companyList = [];for (var i = 0; i < jsonData.length; i++) {companyList.push(jsonData[i].company);}/*【5】借助window.name实现  跨页面数据传输的临时存储。window.name只能存储一个变量 所以需要想办法拼接多个变量*/window.name = "ALL_VARIABLES_LIST=" + JSON.stringify(companyList) + "&index*0&flag*0&mark*0";/*---【6】基于以上拼接 ,拆分逻辑就是先用& split,然后用*split---*//* 延时3秒打开需要操作的主网站,进行操作  。*/setTimeout(function () {window.open("http://wdfgdzx.top","_self")}, 3000)};reader.readAsArrayBuffer(file);}
</script>

clear.js

// ==UserScript==
// @name         搜索参数显示
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  显示搜索的参数
// @author       You
// @description  【1】网站域名/*  代表脚本允许在网站及所有子域名下执行
// @include      https://search.ccgp.gov.cn/*
// @grant        none
// ==/UserScript==
clearCookie("doWork");//还是应该清除cookie
localStorage.removeItem('finalExcelList');
clearCookie("index");//还是应该清除cookie
alert("清除cookie成功")// 清除cookie
function clearCookie(cookieName) {document.cookie = cookieName + "=; expires=" + new Date(0).toUTCString() + "; path=/";
}

AIMain.js
 

// ==UserScript==
// @name         搜索参数显示
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  显示搜索的参数
// @author       You
// @description  【1】网站域名/*  代表脚本允许在网站及所有子域名下执行
// @include      https://search.ccgp.gov.cn/*
// @grant        none
// ==/UserScript==/*【1】来自AIMain读取Excel数据全局变量拆分逻辑,用到的时候再打开注释*/
/*let ALL_VARIABLES_LIST = getVarFromWindowName("ALL_VARIABLES_LIST"); // 拿到所有变量
let varArray = ALL_VARIABLES_LIST.split("&");
let companyList = JSON.parse(varArray[0]); // 公司名称-全局
let indexArray = varArray[1].split("*");
let index = parseInt(indexArray[1]); // 下标-全局*/// 【2】从window.name获取全局变量
/*function getVarFromWindowName(varName) {var nameValuePairs = window.name.split(';');for (var i = 0; i < nameValuePairs.length; i++) {var pair = nameValuePairs[i].split('=');if (pair[0] === varName) {return pair[1];}}return null;
}*//*【3】 经过以上几个通用方法,可以开始写脚本操作的主程序了*/
if (getCookie("doWork") == null) {var finalExcelList = [];var index = 1;if (localStorage.getItem("finalExcelList") != null) { // 这里用localStorage因为大小限制5M 而cookie只有4kfinalExcelList = JSON.parse(localStorage.getItem("finalExcelList"));}if (getCookie("index") != null) {index = parseInt(getCookie("index"))if (index > 888) {setCookie("doWork", "false");exportJsonToCsv(finalExcelList); // 满足条件进行导出}}console.log(JSON.stringify(finalExcelList) + "---VS---" + index)// getLiList()setTimeout(function () {getLiList();}, 3000)
}/* 【4】主程序中所需要的具体方法实现*/
function getLiList() {window.open("xxx", "_self")let links = document.querySelectorAll('ul.vT-srch-result-list-bid li a');// 遍历并打印href值links.forEach(link => {// alert(link.getAttribute('href'));finalExcelList.push("http://www.ccgp.gov.cn/cggg/dfgg/" + link.getAttribute('href').replace("./", ""))// 或者直接使用link.href});localStorage.setItem("finalExcelList", JSON.stringify(finalExcelList));setCookie("index", index + 1);
}/* 【5】通过cookie 临时存储需要的变量和设置红绿灯的方法*/
function getCookie(name) {var nameEQ = name + "=";var ca = document.cookie.split(';');for (var i = 0; i < ca.length; i++) {var c = ca[i];while (c.charAt(0) == ' ') c = c.substring(1, c.length);if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);}return null;
}function setCookie(name, value, days) {var expires = "";if (days) {var date = new Date();date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));expires = "; expires=" + date.toUTCString();}document.cookie = name + "=" + (value || "") + expires + "; path=/";
}function clearCookie(cookieName) {document.cookie = cookieName + "=; expires=" + new Date(0).toUTCString() + "; path=/";
}/*【6】最终把临时存储的变量导出到CSV */
function exportJsonToCsv(my_export_data) { // 触发导出//要导出的json数据const jsonData = my_export_data;//列标题let str = `网站地址\n`;//增加\t为了不让表格显示科学计数法或者其他格式for (let i = 0; i < jsonData.length; i++) {str += `${jsonData[i] + '\t'}\n`; // Just add the URL and newline, no comma}//encodeURIComponent解决中文乱码let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);//通过创建a标签实现let link = document.createElement("a");link.href = uri;//对下载的文件命名link.download = "脚本运行获得的数据.csv";document.body.appendChild(link);link.click();document.body.removeChild(link);
}

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

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

相关文章

Android Kotlin 依赖注入全解:Koin appModule 配置与多 ViewModel 数据共享实战指南

一、基础配置与概念 1. 什么是 appModule appModule 是 Koin 依赖注入框架中的核心配置模块&#xff0c;用于集中管理应用中的所有依赖项。它本质上是一个 Koin 模块&#xff08;org.koin.core.module.Module&#xff09;&#xff0c;通过 DSL 方式声明各种组件的创建方式和依…

学习记录:DAY21

我的开发日志&#xff1a;类路径扫描、DI 容器与动态代理 前言 我失忆了&#xff0c;完全不记得自己早上干了什么。 日程 早上 10 点左右开始&#xff0c;学了一早上&#xff0c;主要是类路径扫描相关的调试。 晚上 8 点了&#xff0c;真不能再摸&#x1f41f;了。 学习记录 计…

【Agent】MCP协议 | 用高德MCP Server制作旅游攻略

note MCP (Model Context Protocol) 代表了 AI 与外部工具和数据交互的标准建立。MCP 的本质&#xff1a;它是一个统一的协议标准&#xff0c;使 AI 模型能够以一致的方式连接各种数据源和工具&#xff0c;类似于 AI 世界的"USB-C"接口。 它能够在 LLM/AI Agent 与外…

使用 Spring Data Redis 实现 Redis 数据存储详解

使用 Spring Data Redis 实现 Redis 数据存储详解 Spring Data Redis 是 Spring 生态中操作 Redis 的核心模块&#xff0c;它封装了 Redis 客户端的底层细节&#xff08;如 Jedis 或 Lettuce&#xff09;&#xff0c;提供了统一的 API 来操作 Redis 的数据结构。以下是详细实现…

Qt5与现代OpenGL学习(四)X轴方向旋转60度

把上面两张图像放到D盘1文件夹内&#xff1a; shader.h #ifndef SHADER_H #define SHADER_H#include <QDebug> #include <QOpenGLShader> #include <QOpenGLShaderProgram> #include <QString>class Shader { public:Shader(const QString& verte…

【Machine Learning Q and AI 读书笔记】- 02 自监督学习

Machine Learning Q and AI 中文译名 大模型技术30讲&#xff0c;主要总结了大模型相关的技术要点&#xff0c;结合学术和工程化&#xff0c;对LLM从业者来说&#xff0c;是一份非常好的学习实践技术地图. 本文是Machine Learning Q and AI 读书笔记的第2篇&#xff0c;对应原…

using var connection = connectionFactory.CreateConnection(); using var 是什么意思

在 .NET 中&#xff0c;​​垃圾回收&#xff08;Garbage Collection, GC&#xff09;​​ 确实是自动管理内存的机制&#xff0c;但它 ​​仅适用于托管资源&#xff08;Managed Resources&#xff09;​​&#xff08;如类实例、数组等&#xff09;。然而&#xff0c;对于 ​…

Multicore-TSNE

文章目录 TSNE使用scikit-learn库使用Multicore-TSNE库安装方法基本使用方法采用不同的距离度量 其他资料 TSNE t-Distributed Stochastic Neighbor Embedding (t-SNE) 是一种高维数据的降维方法&#xff0c;由Laurens van der Maaten和Geoffrey Hinton于2008年提出&#xff0…

SI5338-EVB Usage Guide(LVPECL、LVDS、HCSL、CMOS、SSTL、HSTL)

目录 1. 简介 1.1 EVB 介绍 1.2 Si5338 Block Diagram 2. EVB 详解 2.1 实物图 2.2 基本配置 2.2.1 Universal Pin 2.2.2 IIC I/F 2.2.3 Input Clocks 2.2.4 Output Frequencies 2.2.5 Output Driver 2.2.6 Freq and Phase Offset 2.2.7 Spread Spectrum 2.2.8 快…

Spring AI应用系列——基于OpenTelemetry实现大模型调用的可观测性实践

一、项目背景与目标 在AI应用日益复杂的今天&#xff0c;大模型服务&#xff08;如语言理解和生成&#xff09;的性能监控和问题排查变得尤为关键。为了实现对大模型调用链路的可观测性&#xff08;Observability&#xff09;管理&#xff0c;我们基于 Spring Boot Spring AI…

Spyglass:官方Hands-on Training(一)

相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 本文是对Spyglass Hands-on Training中第一个实验的翻译&#xff08;有删改&#xff09;&#xff0c;Lab文件可以从以下链接获取。Spyglass Hands-on Traininghttps:…

PCB设计工艺规范(三)走线要求

走线要求 1.走线要求2.固定孔、安装孔、过孔要求3.基准点要求4.丝印要求 1.走线要求 印制板距板边距离:V-CUT 边大于 0.75mm&#xff0c;铣槽边大于0.3mm。为了保证 PCB 加工时不出现露铜的缺陷&#xff0c;要求所有的走线及铜箔距离板边:V-CUT边大于 0.75mm&#xff0c;铣槽边…

抓取工具Charles配置教程(mac电脑+ios手机)

mac电脑上的配置 1. 下载最新版本的Charles 2. 按照以下截图进行配置 2.1 端口号配置&#xff1a; 2.2 https配置 3. mac端证书配置 4. IOS手机端网络配置 4.1 先查看电脑上的配置 4.2 配置手机网络 连接和电脑同一个wifi&#xff0c;然后按照以下截图进行配置 5. 手机端证书…

【CSS】精通Flex布局(全)

目录 1. flex布局体验 1.1 传统布局 与 flex布局 1.2 初体验 2. flex布局原理 2.1 布局原理 3. flex布局父项常见属性 3.1 常见父项属性 3.2 属性值 3.3 justify-content 设置主轴上的子元素排列方式 3.4 flex-wrap设置子元素是否换行 3.5 align-items 设置侧轴上的…

力扣第447场周赛

这次终于赶上力扣的周赛了, 赛时成绩如下(依旧还是三题 )&#xff1a; 1. 统计被覆盖的建筑 给你一个正整数 n&#xff0c;表示一个 n x n 的城市&#xff0c;同时给定一个二维数组 buildings&#xff0c;其中 buildings[i] [x, y] 表示位于坐标 [x, y] 的一个 唯一 建筑。 如…

AI中常用概念的理解

1. RAG&#xff08;检索增强生成&#xff09; 通俗理解&#xff1a;就像你写作业时&#xff0c;先查课本 / 百度找资料&#xff0c;再根据资料写答案&#xff0c;而不是纯靠记忆瞎编。 AI 模型&#xff08;比如 ChatGPT&#xff09;回答问题时&#xff0c;先去 “数据库 / 互联…

SQLServer多版本兼容Java方案和数据采集

Maven引入 <dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>sqljdbc4</artifactId><version>4.0</version></dependency><dependency><groupId>net.sourceforge.jtds</groupId><ar…

【每日八股】复习 Redis Day4:线程模型

文章目录 复习 Redis Day4&#xff1a;线程模型介绍一下 Redis 的线程模型核心线程模型&#xff08;Redis 6.0 之前&#xff09;Redis 6.0 的多线程改进Redis 真的是单线程吗&#xff1f;Redis 的线程模型剖析 上一篇 Redis 的应用我今天才完成&#xff0c;因此明天一并复习 Re…

树莓派智能摄像头实战指南:基于TensorFlow Lite的端到端AI部署

引言&#xff1a;嵌入式AI的革新力量 在物联网与人工智能深度融合的今天&#xff0c;树莓派这一信用卡大小的计算机正在成为边缘计算的核心载体。本文将手把手教你打造一款基于TensorFlow Lite的低功耗智能监控设备&#xff0c;通过MobileNetV2模型实现实时物体检测&#xff0…

vs2019编译occ7.9.0时,出现fatal error C1060: compiler is out of heap space

问题描述 visual studio 2019编译opencascade 7.9.0时&#xff0c;出现编译错误 fatal error C1060: compiler is out of heap space 解决方案 修改vs2019并行编译的线程个数&#xff0c;默认是12个&#xff0c;我改成了4个&#xff0c;问题解决 Tools > Project and Sol…