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




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只有4k
        finalExcelList = 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);
}

你可能感兴趣的:(自动化,运维)