最近要改造自动用例生成平台,想用element-ui改造一下前端,但是如果用webpack会比较麻烦,于是想着下载下来直接引用更方便。但是网上找了一下,有个python的要比较多C币下载,咱虽然有不少C币但这种小活干嘛不自己做一下,于是就自己写了个脚本。
至于引用本地element-ui的方法及引用后使用方法看我另一篇博文:

https://blog.csdn.net/ttphoon/article/details/104668026

python版

只需要修改所要下载的版本号以及下载下来后文件所要存放的位置即可。
代码如下:

#encoding:utf-8
from bs4 import BeautifulSoup
import requests,re,os,socket
from urllib import request
#指定要下载的版本
element_ui_version = "2.13.0"
#指定文件要存放的位置
element_ui_dir = "D:/tmp"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"
}
def get_page(url,save_dir):print("Current Page:    ",url)response = requests.get(url,headers=headers)soup = BeautifulSoup(str(response.content), "lxml")tbody = soup.find("tbody")rule_name = r'href="(.+?)"'td_href = re.findall(rule_name,str(tbody))dir_list = []for href in td_href:href_path = os.path.join(save_dir, href)if href == "../":passelif "/" 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):opener =request.build_opener()opener.addheaders = [('User-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0')]request.install_opener(opener)socket.setdefaulttimeout(30)url = url.replace("browse/","")count = 1while count <= 5:try: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 += 1if count > 5:print("<Error>  download job failed!")else:passget_page(element_ui_url,save_ui_dir)

java版

这个是网上找的,本质都是差不多的,把目录页面爬取下来,然后把href提取出来。
方法:新建一个txt改名xxx.java,然后修改版本及存放位置,最后cmd执行java xxx.java即可
代码如下:

package com.ycr;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 Main {static String fileP = "D:\\tmp\\element-ui\\"; static String urlP = "https://unpkg.com/browse/element-ui@2.13.0/";static String urlF = "https://unpkg.com/element-ui@2.13.0/";public static void main(String[] args){try {GetPage("");} catch (Exception e) {e.printStackTrace();}}static void GetPage(String after) throws Exception {System.out.println(urlP + after);new File(fileP + after).mkdir();HttpURLConnection http = (HttpURLConnection) (new URL(urlP + after)).openConnection();http.setRequestMethod("GET");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) {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();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];String [] us = content.split("href=\"");for(int i = 1; i < us.length; i ++) {String href = us[i].split("\"", 2)[0];if(href.equals("../")) {continue;}if(href.charAt(href.length() - 1) == '/') {GetPage(after + href);} else {GetFile(after + href);}}} else {GetPage(after);}}static void GetFile(String url) throws Exception{System.out.println(url);HttpURLConnection http;http = (HttpURLConnection) (new URL(urlF + url)).openConnection();http.setRequestMethod("GET");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) {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();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);}File f = new File(fileP + url.replaceAll("/", "\\\\"));f.createNewFile();FileOutputStream fos = new FileOutputStream(f, false);fos.write(all);fos.flush();fos.close();} else {GetFile(url);}}
}

不过,因为这个网站服务器是位于美国的,所以速度会比较慢。而且好像有防爬虫机制,如果频繁重复下载会有一定的限制,不过很快的就解除就是了。

element-ui下载到本地方法(python 或java)相关推荐

  1. 46栈内存溢出、内存区域(程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区、直接内存、内存溢出)与内存溢出(对象实例化分析)

    46.什么情况下会发生栈内存溢出 46.1.Java 内存区域与内存溢出 46.1.1.内存区域 46.1.1.1.程序计数器 46.1.1.2.Java 虚拟机栈 46.1.1.3.本地方法栈 46 ...

  2. 安装 Element UI 3.0 (即 Element UI Plus) 正确方法

    首先官网推荐的安装方法没有生成dist文件,导致样式表等这些文件并没有生成 npm install element-plus --save 以上方法是有问题的,如果不幸执行了上面的命令,那么先执行卸载 ...

  3. clion 引用dll_用CLion实现本地方法并给java调用

    众所周知,PHP是世界上最好的语言,java排第二,因为PHP无所不能.但是在某些场景下java还要调用本地方法来提高执行的效率,故java只能排第二.java提供了jni(Java Native I ...

  4. native关键字(本地方法)、 java调用so动态链接库

    Java native关键字 一. 什么是Native Method    简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个j ...

  5. vue+element UI分页的使用方法

    这篇仅对于刚入行前端的小伙伴,大佬勿喷,技术比较菜,哪里写的不对也请指正 首先第一步当然少不了我们的分页组件 <el-pagination:current-page="page_opt ...

  6. DataGear 制作基于Vue2、Element UI前端框架的数据可视化看板

    DataGear 数据可视化看板内置了一些基本.简单的页面交互组件,当它们无法满足实际看板需求时,可以引入更流行和强大的前端框架. 本文以Vue2.Element UI前端框架为例,介绍如何制作具有更 ...

  7. 本地方法接口和本地方法栈

    本地方法接口 什么是本地方法? 一个Native Method就是一个Java调用非Java代码的接口.一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C. ...

  8. JVM---本地方法接口和本地方法栈

    本地方法接口 什么是本地方法? 简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗.一个 Native Method 是这样一个 Java 方法:该方法的实现由 ...

  9. [zz] 深入java虚拟机之本地方法

    [zz] 深入java虚拟机之本地方法 转自:http://blog.csdn.net/sunxiaosunxiao/article/details/6829899 本地方法就是直接和硬件打交道的一个 ...

  10. 什么是java本地方法?什么,还没听说过java的native关键字?真的该学学了!

    目录 开局一张图 什么是本地方法? 举例 为什么要使用Native Method 现状 本地方法栈 开局一张图 什么是本地方法? 简单地讲,一个Native Method就是一个Java调用非Java ...

最新文章

  1. 漏洞扫描工具_Vulmap漏洞扫描工具
  2. 智能计算机和智能化网络结论,人工智能技术中计算机网络技术的应用
  3. python工程师-如何面试Python后端工程师?
  4. Eclipse新建Maven项目没有web.xml
  5. Android复习16【材料设计新特性:fragment、RecyclerView】
  6. Vue2 封装的 Quill 富文本编辑器组件 Vue-Quill-Editor
  7. How to install Aptana Studio 3 on Ubuntu 12.04 LTS (Precise Pangolin)
  8. 为什么要在JavaScript中使用静态类型? 我们是否应该使用它们?
  9. java学习二---对象和内存管理
  10. 织梦linux php版本,Linux下安装DedeCMS及安全设置
  11. apache2配置rewrite_module
  12. Atitti html5 h5 新特性attilax总结
  13. 分享基于SpringBoot2+MybatiPlus+LayUI+Snaker+Mysql技术前后端分离开源后台管理系统脚手架
  14. a36.ansible 生产实战案例 -- 基于kubeadm安装kubernetes v1.23 -- 集群部署(一)
  15. DirectX11 交换链是什么
  16. 非日语专业如何有效学习日语?
  17. TCP/IP协议栈Lwip的设计与实现:之三
  18. FPGA niosII 视频笔记
  19. 一文看懂大数据矩阵运算利器-Spark Distributed Matrix
  20. 微信链接跳转浏览器 H5实现APP下载功能实现方法

热门文章

  1. 容器化部署openvpn,访问策略配置
  2. ffmpeg给视频加水印
  3. m3u8格式转MP4(ffmpeg方法)
  4. 巨蟒django之CRM1 需求分析表结构设计注册登录验证
  5. 74HC595级联电路编程篇(三)
  6. Linux 之系统美化
  7. 聊一下测试工程师的招聘
  8. 文件系统模拟程序python_树莓派开发实战(第2版)
  9. 中国移动mda移动桌面助手
  10. 今天,我们求知若渴、虚心若愚(附技术PPT)