[element]element-ui框架下载

news/2024/5/1 14:02:56/文章来源:https://blog.csdn.net/qq_60735796/article/details/130102906

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正,一同进步😁

目录

  • 1、官网
  • 2、框架文件夹
  • 3、如何下载
    • 3.1、python
    • 3.2、Java

⭐⭐写在前面:
  下载这个element-ui也是折腾了很久,在官网一直都没有找到,最后实在没辙,用了下面提到的方法。
  有个问题就是用代码爬取会比较慢,如果不想花时间等待下载,也可以一键三连私信我单独分享云盘链接😉😊

1、官网

https://element.eleme.cn/#/zh-CN/component/installation
在这里插入图片描述

2、框架文件夹

在这里插入图片描述

访问对应的路径:https://unpkg.com/browse/element-ui@2.15.13/

版本可以选择:
在这里插入图片描述

但是并没有下载的选项

3、如何下载

没下载选项,那只能,爬!
下面是python和Java的爬虫代码,有非常详细的注释,使用的时候只需要手动替换想要的版本信息和想要保存的路径即可(推荐使用python,这个需求的实现,Java的阅读性没有python直观)
比如:
在这里插入图片描述

3.1、python

# encoding:utf-8
# @Author:逐梦苍穹# 导入需要使用的模块
from bs4 import BeautifulSoup  # 解析 HTML 页面的库
import requests  # 发送 HTTP 请求的库
import re  # 正则表达式匹配的库
import os  # 处理文件和目录的库
import socket  # 处理网络连接超时的库
from urllib import request  # 处理 URL 请求的库# 定义获取页面的函数
def get_page(url, save_dir):# 打印当前处理的页面 URLprint("Current Page:    ", url)# 发送 HTTP GET 请求response = requests.get(url, headers=headers)# 使用 BeautifulSoup 对 HTML 页面进行解析soup = BeautifulSoup(str(response.content), "lxml")# 从页面中获取 tbody 标签中的内容tbody = soup.find("tbody")# 定义正则表达式规则,用于匹配 href 属性的内容rule_name = r'href="(.+?)"'# 使用正则表达式查找 href 属性的内容td_href = re.findall(rule_name, str(tbody))# 定义目录列表dir_list = []# 遍历每个 href 属性for href in td_href:# 组装完整的路径href_path = os.path.join(save_dir, href)# 如果是父目录,跳过if href == "../":pass# 如果是子目录,就创建目录elif "/" in href:os.mkdir(href_path)print("Makedir:    ", href_path.replace(save_ui_dir, ""))dir_list.append(href)# 否则就是文件,就下载文件else:file_url = url + hrefabs_name = file_url.replace(element_ui_url, "")print("Download:    ", abs_name)get_file(file_url, href_path)# 遍历目录列表,递归调用本函数for sub_dir in dir_list:sub_url = url + sub_dirsub_dir = os.path.join(save_dir, sub_dir)get_page(sub_url, sub_dir)# 定义下载文件的函数
def get_file(url, filename):# 创建一个网络请求的openeropener = request.build_opener()# 设置请求头opener.addheaders = [('User-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0')]# 将opener安装到全局request.install_opener(opener)# 设置socket超时时间为30秒socket.setdefaulttimeout(30)# 去除URL中的"browse/"字符url = url.replace("browse/", "")# 设置重试次数为5次count = 1while count <= 5:try:# 使用urlretrieve函数下载文件到本地request.urlretrieve(url, filename)# 下载成功则跳出循环breakexcept socket.timeout:# 超时则输出错误信息,并进行重试err_info = '<Timeout>   Reloading for %d time' % countprint(err_info)count += 1except Exception as e:# 其他异常情况也需要重试err_info = '<' + str(e) + '>   Reloading for %d time' % countprint(err_info)count += 1# 如果重试5次还是失败,则输出错误信息if count > 5:print("<Error>  download job failed!")else:# 下载成功则不做处理,直接跳过passif __name__ == '__main__':# 指定要下载的版本element_ui_version = "2.11.1"# 指定文件要存放的位置element_ui_dir = "D:\\原C盘“桌面”\\桌面\\日常工具包"# 组装保存路径save_ui_dir = os.path.join(element_ui_dir, "element-ui")# 如果路径不存在,就创建路径if not os.path.isdir(save_ui_dir):os.makedirs(save_ui_dir)# 组装下载链接element_ui_url = "https://unpkg.com/browse/element-ui@" + element_ui_version + "/"# 添加请求头部信息,模拟浏览器的行为headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0"}get_page(element_ui_url, save_ui_dir)

3.2、Java

对要使用的包进行解释说明:
下面是每个导入包的详细介绍:

  1. import java.io.File; import java.io.FileOutputStream; import java.io.InputStream;这些包提供了与文件和输入/输出操作相关的类和接口。File类提供了访问文件和目录的方法,FileOutputStream类用于向文件写入数据,而InputStream类用于从文件读取数据。这些类和接口可以帮助您读取和写入本地文件系统上的文件。
  2. import java.net.HttpURLConnection; import java.net.URL;这些包提供了用于HTTP和URL连接的类和接口。HttpURLConnection类提供了HTTP连接的方法,使您可以发送和接收HTTP请求和响应。URL类则提供了解析和构建URL的方法。
  3. import java.nio.charset.StandardCharsets;这个包提供了Java支持的所有字符集的常量,如UTF-8、ISO-8859-1等。这些常量用于指定字符编码,以便正确地读取和写入文本数据。
  4. import java.util.ArrayList;这个包提供了一个动态数组的实现,称为ArrayList。它提供了添加、删除、搜索和遍历数组元素的方法。ArrayList是Java编程中最常用的集合之一,可以方便地存储和操作对象的列表。
/*** 作者:逐梦苍穹* 日期:2023/4/12 8:45*/// 导入所需要的Java类库
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;public class element_ui {// 定义静态变量fileP,表示文件保存的路径static String fileP = "D:\\原C盘“桌面”\\桌面\\日常工具包\\element-ui";// 定义静态变量urlP,表示要爬取的网站的URLstatic String urlP = "https://unpkg.com/browse/element-ui@2.13.0/";// 定义静态变量urlF,表示要爬取的文件的URLstatic String urlF = "https://unpkg.com/element-ui@2.13.0/";public static void main(String[] args) {try {// 调用GetPage方法,开始爬取资源GetPage("");} catch (Exception e) {e.printStackTrace();}}// 定义GetPage方法,用于爬取指定URL下的资源static void GetPage(String after) throws Exception {// 输出当前正在爬取的URLSystem.out.println(urlP + after);// 创建对应的目录,如果已存在则不会重复创建new File(fileP + after).mkdir();// 打开HTTP连接HttpURLConnection http = (HttpURLConnection) (new URL(urlP + after)).openConnection();// 设置请求方法为GEThttp.setRequestMethod("GET");// 设置User-Agent头部信息http.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3562.0 Safari/537.36");// 连接到指定URLhttp.connect();// 如果连接成功if (http.getResponseCode() == 200) { // 检查请求是否成功InputStream inputStream = http.getInputStream(); // 获取响应的输入流byte[] buffer = new byte[1024]; // 定义一个字节数组作为缓冲区ArrayList<byte[]> byteList = new ArrayList<>(); // 定义一个字节数组列表,用于存储读取的数据ArrayList<Integer> byteLength = new ArrayList<>(); // 定义一个整数列表,用于存储每个字节数组的长度int length; // 定义一个整数,用于存储每次读取的字节数int totalLength = 0; // 定义一个整数,用于存储读取的总字节数while ((length = inputStream.read(buffer)) != -1) { // 循环读取输入流中的数据,直到读到末尾byteList.add(buffer); // 将读取的字节数组添加到列表中byteLength.add(length); // 将读取的字节数组长度添加到列表中totalLength += length; // 累加已读取的字节数buffer = new byte[1024]; // 清空缓冲区}http.disconnect(); // 关闭HTTP连接byte[] all; // 定义一个字节数组,用于存储读取的所有数据all = new byte[totalLength]; // 分配足够的空间totalLength = 0; // 重新初始化读取的总字节数while (byteList.size() != 0) { // 循环遍历字节数组列表,将所有字节数组合并成一个大的字节数组System.arraycopy(byteList.get(0), 0, all, totalLength, byteLength.get(0)); // 将当前字节数组拷贝到大数组中totalLength += byteLength.get(0); // 更新已拷贝的字节数byteList.remove(0); // 从列表中删除已经拷贝的字节数组byteLength.remove(0); // 同时删除对应的字节数组长度}String content = new String(all, StandardCharsets.UTF_8); // 将字节数组转换成字符串all = null; // 释放字节数组的空间content = content.split("tbody")[1]; // 切割字符串,只保留tbody标签之后的内容String[] us = content.split("href=\""); // 切割字符串,将所有的链接分割出来for (int i = 1; i < us.length; i++) { // 遍历所有链接String href = us[i].split("\"", 2)[0]; // 提取当前链接的URLif (href.equals("../")) { // 如果是上一级目录的链接,跳过continue;}if (href.charAt(href.length() - 1) == '/') { // 如果是目录的链接,递归调用GetPage方法GetPage(after + href);} else { // 如果是文件的链接,调调用GetFile方法GetFile(after + href);}}} else {// 如果返回的状态码不是 200,就重新调用 GetFile 方法,传入相同的参数GetPage(after);}}static void GetFile(String url) throws Exception {System.out.println(url);HttpURLConnection http;// 创建一个 HttpURLConnection 对象,用于发送 HTTP 请求http = (HttpURLConnection) (new URL(urlF + url)).openConnection();http.setRequestMethod("GET");// 设置请求头 User-Agent 信息,模拟浏览器访问http.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3562.0 Safari/537.36");http.connect();if (http.getResponseCode() == 200) {// 如果返回的状态码是 200,说明请求成功,获取输入流并读取数据InputStream inputStream = http.getInputStream();byte[] buffer = new byte[1024];ArrayList<byte[]> byteList = new ArrayList<>();ArrayList<Integer> byteLength = new ArrayList<>();int length;int totalLength = 0;while ((length = inputStream.read(buffer)) != -1) {// 将读取到的数据保存到一个 byte 数组中byteList.add(buffer);byteLength.add(length);totalLength += length;buffer = new byte[1024];}http.disconnect();byte[] all;all = new byte[totalLength];totalLength = 0;// 将多个 byte 数组拼接成一个 byte 数组while (byteList.size() != 0) {System.arraycopy(byteList.get(0), 0, all, totalLength, byteLength.get(0));totalLength += byteLength.get(0);byteList.remove(0);byteLength.remove(0);}// 将 byte 数组转换为字符串,并对字符串进行处理String filePath = fileP + url.replaceAll("/", "\\\\");// 创建一个新文件File f = new File(filePath);f.createNewFile();// 将文件的内容写入到新文件中FileOutputStream fos = new FileOutputStream(f, false);fos.write(all);fos.flush();fos.close();} else {// 如果返回的状态码不是 200,就重新调用 GetFile 方法,传入相同的参数GetFile(url);}}
}

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

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

相关文章

【CSS】固定定位示例 ( 屏幕左右两侧广告栏 | 开发要点分析 | 代码示例 )

文章目录一、开发要点分析二、代码示例一、开发要点分析 实现下图样式 : 中间部分是网页内容 , 左右两侧是 固定广告栏 , 不管浏览器如何滚动 , 缩放 , 该左右两侧广告栏不变 ; 标签结构分析 : 上述页面中 , 中心的版心盒子 与 左侧广告栏 / 右侧广告栏 是兄弟关系 ; <div …

11. unity 物理系统和碰撞检测+射击游戏案例

1. 物理系统 也就是在游戏场景中添加日常的重力&#xff0c;碰撞等到物理属性 1.1 刚体组件&#xff08;Rigidbody&#xff09; 给模型添加刚体组件后&#xff0c;模型会具备一些物理属性&#xff0c;比如重力&#xff0c;速度&#xff0c;加速度等&#xff0c;在属性窗口中…

Postman抓包教程

目录 什么是抓包&#xff1f; 如何使用 Postman 进行抓包 查看历史抓包数据 使用抓包数据进行接口测试和开发 抓包技巧和注意事项 什么是抓包&#xff1f; 在计算机网络中&#xff0c;抓包是指捕获网络流量的过程。抓包工具可以截获进出计算机网络的数据流&#xff0c;并将…

Linux系统之MobaXterm远程连接centos的GNOME桌面环境

Linux系统之MobaXterm远程连接centos的GNOME桌面环境一、MobaXterm介绍1.MobaXterm简介2.MobaXterm功能特点二、centos安装GNOME桌面1.本地环境介绍2.安装GNOME桌面环境3.本地进入Linux桌面三、MobaXterm远程连接centos1.打开MobaXterm软件2.远程连接本地Linux系统四、远程连接…

wmv格式的视频怎么转成mp4,4种方法简单易学

你知道wmv格式的视频怎么转成mp4吗&#xff1f;wmv和mp4都是视频文件格式&#xff0c;wmv格式是由微软开发的一种数字容器格式&#xff0c;它主要适用于电脑客户端。但由于其兼容性不佳&#xff0c;可能导致无法播放或出现错误。相比之下&#xff0c;mp4格式具有更广泛的兼容性…

【linux】——进程和计划任务管理

文章目录1.进程 VS 线程1.1 程序和进程的关系1.2 线程1.3 进程和线程的关系2.查看进程2.1 查看进程信息ps2.2 查看进程信息top2.3 查看进程信息pgrep2.4 查看进程树pstree3.控制进程3.1 进程的启动方式3.2 进程的前后台调度3.3 终止进程的运行kill3.4 终止进程的运行pkill4.计划…

PathCore:IAD文献解读

论文链接&#xff1a;[Towards Total Recall in Industrial Anomaly Detection]Towards Total Recall in Industrial Anomaly Detection &#xff1a;数据集&#xff0c; &#xff1a;标签 : 在ImageNet上预训练后的网络 第 张图 网络中第 层 1. Locall…

干货分享 | 采购没“云”和有云的区别有哪些?

多年前&#xff0c;提起“云”这个词&#xff0c;很多人还是“不知所云”。 但如今&#xff0c;大众对“云”的了解和认可程度也越来越高&#xff0c;尽情享受着“云”带来的便利。 通过“云”&#xff0c;可以随时随地畅听海量音乐、进行网购、访问云盘的照片和视频、在云端创…

Linux中jar包的启动脚本解析及问题

搭建运行环境时&#xff0c;把jar包打好外&#xff0c;我们还需要一个启动脚本&#xff0c;新建一个文件start.sh,内容如下&#xff1a; ps -ef | grep dvmrms | grep -v grep | awk {print $2} | xargs kill -9nohup java -jar dvmrms.jar >/dev/null 2>&1 &sl…

对抗样本-(CVPR 2022)-通过基于对象多样化输入来提高有针对性对抗样本的可迁移性

论文地址&#xff1a;https://arxiv.org/abs/2203.09123 代码地址&#xff1a;https://github.com/dreamflake/ODI 摘要&#xff1a;本文提出了一种新的方法来生成有针对性的对抗样本&#xff0c;该方法通过使用多种不同的输入图像来生成更加丰富和多样化的图像。具体而言&…

【都2023年了,还在问网络安全怎么入门】

前言 【都2023年了&#xff0c;还在问网络安全怎么入门】所以这一期就出一一个怎么学习网络安全的学习路线和方法&#xff0c;觉得有用的话点赞收藏下 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有…

暗讽友商 昆仑万维大模型预告刺激股价

搭上AI风口&#xff0c;上市公司昆仑万维年内股价大涨217.56%&#xff0c;一时名声大噪。火了以后&#xff0c;昆仑万维的野心越来越大&#xff0c;喊出“All in AGI&#xff08;通用人工智能&#xff09;与AIGC”的豪言壮语。 在近期预告旗下大模型“天工”邀测的公告中&…

【数据结构与算法】万字剖析八大排序(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序)

目录一.直接插入排序二.希尔排序三.选择排序四.堆排序五.冒泡排序六.快速排序1.hoare版2.挖坑法3.前后指针4.选取基准值的优化&#xff08;1&#xff09;快速排序非递归七.归并排序&#xff08;2&#xff09;归并排序非递归八.计数排序九.八大排序稳定性分析一.直接插入排序 初…

javaEE 初阶 — 第一个 servlet 程序

文章目录Servlet 是什么第一个 Servlet 程序1 创建项目2 引入依赖3 创建目录结构4 代码编写5 打包程序6 部署7 验证如何使用 tomcat 插件打包及部署1 什么是插件2 插件的安装3 插件的使用4 可能会出现的问题Servlet 是什么 Servlet 是一种实现 动态页面 的技术&#xff0c;是一…

elasticsearch MySQL 数据同步。

elasticsearch & MySQL 数据同步。 文章目录elasticsearch & MySQL 数据同步。3. 数据同步。3.1. 思路分析。3.1.1. 同步调用。3.1.2. 异步通知。3.1.3. 监听 binlog。3.1.4. 选择。3.2. 实现数据同步。3.2.1. 思路。3.2.2. 导入 demo。3.2.3. 声明交换机、队列。1&…

ChatGLM-6B论文代码笔记

ChatGLM-6B 文章目录ChatGLM-6B前言一、原理1.1 优势1.2 实验1.3 特点&#xff1a;1.4 相关知识点二、实验2.1 环境基础2.2 构建环境2.3 安装依赖2.4 运行2.5 数据2.6 构建前端页面3 总结前言 Github&#xff1a;https://github.com/THUDM/ChatGLM-6B 参考链接&#xff1a; ht…

GPSS【实践 01】Developing a Greenplum Streaming Server Client 自定义GPSS客户端开发实例

自定义GPSS客户端开发流程1.GPSS是什么2.架构3.组件下载安装4.自定义客户端4.1 GPSS Batch Data API Service Definition4.2 Setting up a Java Development Environment4.3 Generating the Batch Data API Client Classes4.4 Coding the GPSS Batch Data Client4.4.1 Connect …

精准关键词获取-行业搜索词分析

SEO关键词的收集通常可以通过以下几种方法&#xff1a; 根据市场价值、搜索词竞争性和企业实际产品特征进行筛选&#xff1a;确定您的关键词列表之前&#xff0c;建议先进行市场分析&#xff0c;了解您的竞争对手、行业状况和目标受众等信息&#xff0c;以更好的了解所需的特定…

为何ChatGPT如此擅长编造故事?

“幻觉”——人工智能中的一个偏见性术语 AI聊天机器人(如OpenAI的ChatGPT)依赖于一种称为“大型语言模型”(LLM)的人工智能来生成它们的响应。LLM是一种计算机程序&#xff0c;经过数百万文本源的训练&#xff0c;可以阅读并生成“自然语言”文本语言&#xff0c;就像人类自然…

HTTP协议概述 | 简析HTTP请求流程 | HTTP8种请求方法

目录 &#x1f30f; HTTP的简单介绍 何为HTTP HTTP1.0与HTTP1.1 &#x1f30f; HTTP的请求方法 1、OPTIONS 2、HEAD 3、GET 4、POST 5、PUT 6、DELETE 7、TRACE 8、CONNECT &#x1f30f; HTTP的工作原理 &#x1f30f; HTTP请求/响应的步骤 1、客户端连接到Web…