前端远原生js爬取数据的小案例

使用方法

在这里插入图片描述

注意分页的字段需要在代码里面定制化修改,根据你爬取的接口,他的业务规则改代码中的字段。比如我这里总条数叫total,人家的不一定。返回的数据我这里是data.rows,看看人家的是叫什么字段,改改代码。再比如我这里的分页叫pageNum,人家的可能叫pageNo

效果

在这里插入图片描述

上源码

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>爬虫</title><style>.container{width: 50%;margin: 50px auto;}input,textarea {height: 30px;width: -webkit-fill-available;margin-bottom: 15px;}textarea {height: 120px;}button {height: 40px;width: 110px;font-size: 18px;}#h1,#h2 {text-align: center;}</style></head><body><div class="container"><div>接口:<input id="api" type="text" /> <br />请求头:<textarea id="headers" type="text" placeholder="要json格式"></textarea><br />参数:<textarea id="textarea" placeholder="要json格式"></textarea></div><div style="text-align: right;"><button onclick="crawling()">拉取</button></div><h1 id="h1"></h1><h2 id="h2"></h2></div><script>var total = 0;var pageNum = 1;var pageSize = 30;var api = "";var headers = "";var textarea = "";const h1 = document.querySelector("#h1");const h2 = document.querySelector("#h2");async function crawling() {api = document.querySelector("#api").value;headers = document.querySelector("#headers").value;textarea = document.querySelector("#textarea").value;h1.innerHTML = "开始爬取...";const data = await getData();total = data.total;const page = Math.ceil(total / pageSize);saveFile(JSON.stringify(data.rows),`第1页 / 共${page}`);loading();}async function loading() {const page = Math.ceil(total / pageSize);h2.innerHTML = `一共${total}条,${page}`;for (let i = 1; i < page; i++) {pageNum++;h2.innerHTML = `一共${total}条,${page}页,正在第${i+1}`;const data = await getData();saveFile(JSON.stringify(data.rows),`${i+1}页 / 共${page}`);}h1.innerHTML = "爬取完毕,已下载数据";h2.innerHTML = "";total = 0;pageNum = 1;}async function getData() {const response = await fetch(api, {method: "POST",mode: "cors",cache: "no-cache",credentials: "same-origin",headers: {"Content-Type": "application/json",...JSON.parse(headers)},body: JSON.stringify({...JSON.parse(textarea),"pageSize": pageSize,"pageNum": pageNum})});return response.json();}function saveFile(data,name) {const blob = new Blob([data], {type: "application/json"});let link = document.createElement("a"); // 创建下载的实体标签link.href = URL.createObjectURL(blob); // 创建下载的链接link.download = name + ".json"; // 下载的文件名link.click(); // 执行下载URL.revokeObjectURL(link.href); // 下载完成释放掉blob对象}</script></body>
</html>

开始在小小的网站里面爬呀爬呀爬吧…

拓展

怎么爬取微信小程序的接口?使用Charles 拿到接口、请求头、参数,再回来使用界面爬取

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

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

相关文章

Git的安装

1、下载 官网地址&#xff1a; https://git-scm.com/或https://github.com/git-for-windows/git/releases 百度网盘链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/13_asGO-XQb5KWWH_V7rq6g?pwd0630 2、安装 ①查看GNU协议&#xff0c;可以直接点击下一步。 ②…

dns 域名解析

一&#xff0c;dns 是什么 domain name server 域名解析 将域名转化成 ip 地址 这是个7层协议 既使用tcp53端口 &#xff08;主从之间同步&#xff09; 也使用udp53端口 &#xff08;域名名字解析&#xff09; 二&#xff0c;dns 实现方法 1&#xff0c;通过…

POI:对Excel的基本读操作 整理2

1 简单读取操作 public class ExcelRead {String PATH "D:\\Idea-projects\\POI\\POI_projects";// 读取的一系列方法// ...... } 因为07版本和03版本操作流程大差不差&#xff0c;所以这边就以03版本为例 Testpublic void testRead03() throws IOException {//获取…

element+vue 之图片放大器

1.安装插件 npm install vue-photo-zoom-pro2.main.js导入 // 放大镜 import VuePhotoZoomPro from vue-photo-zoom-pro Vue.use(VuePhotoZoomPro)3.页面使用 <vue-photo-zoom-pro:url"imgUrl":out-zoomer"true":scale"2"style"width:…

CST2024的License服务成功启动,仍报错——“The desired daemon is down...”,适用于任何版本!基础设置遗漏!

CST2024的License服务成功启动&#xff0c;仍报错——“The desired daemon is down…”&#xff0c;适用于任何版本&#xff01;基础设置遗漏&#xff01; CST2024的License服务成功启动后报错 若不能成功启动License服务&#xff0c;有可能是你的计算机名称带中文&#xff…

【嵌入式——QT】QT静态编译

【嵌入式——QT】QT静态编译 QT下载查看文档下载Visual Studio打开命令行模式编译添加QT到Qt Creator编译示例 QT下载 下载地址 进入目录&#xff0c;我这里选择的qt-everywhere-src-5.14.1.zip。 查看文档 解压压缩包打开源码&#xff0c;查看README文件&#xff0c;里面…

【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C复习系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

公司官网,选全站定制还是模板建站?

最近更新了公司网站&#xff0c;总算了了一件大事。 虽然很久以前也做网站&#xff0c;但随着技术的发展&#xff0c;以前经常用的dreamwaver、table等形式&#xff0c;不知道被升级了多少代。现在前端同事说起的各种架构&#xff0c;对我来说是云里雾里。只能看懂一点点。 这…

操作系统-操作系统的特征(并发 共享 虚拟 异步 之间关系)

文章目录 总览操作系统的特征-并发操作系统的特征-共享并发和共享的关系操作系统的特征-虚拟操作系统的特征-异步小结 总览 操作系统的特征-并发 并行&#xff1a;同时做多个事件 并发&#xff1a;同一个时刻只有一个事件&#xff0c;但会切换事件&#xff0c;所以宏观上可能做…

VASP结合vaspkit+ShengBTE计算热电优值(一)

电导率σ&#xff0c;塞贝克系数S的计算&#xff1a; 使用vaspkit计算处对应的物理量&#xff0c;具体流程为&#xff1a; 准备好计算的材料对应的POSCAR。如果是二维材料可以使用vaspkit 的921或923功能对二维材料POSCAR进行标准化。进行结构优化。使用 vaspkit-681命令生成高…

仿真验证方法(3)——物理验证

目录 一、物理验证的分类 二、DRC 2.1 设计规则 2.2 规则示例 2.3 线宽违例 2.4 间距违例 2.5 交叠违例 三、金属覆盖图形密度检查 四、天线比率检查 4.1 起因 4.2 计算 4.3 改进 五、LVS检查 六、物理验证常用的EDA工具 七、总结 一、物理验证的分类 对于物理验…

NULL是什么?

NULL是一个编程术语&#xff0c;通常用于表示一个空值或无效值。在很多编程语言中&#xff0c;NULL用于表示一个变量或指针不引用任何有效的对象或内存位置。 NULL可以看作是一个特殊的值&#xff0c;表示缺少有效的数据或引用。当一个变量被赋予NULL值时&#xff0c;它表示该变…