下载网络文件到本地

文章目录

目录

前言

操作步骤

1.引入

2.读取出文件内容

 3.筛选出URL

4.下载表情包

总结


前言

这里记录一次用代码下载网络文件的过程,以获取抖音表情包为例。

一、操作步骤

1.引入

首先抖音有网页版,用浏览器就可以观看,用户评论发布表情在评论面板自然也是一个url链接,

我们只需F12打开审查表情包面板的代码,将带有多个表情包的html复制并保存到我们电脑文件中,再用正则筛选出各个url,将url用代码去下载该表情包文件并保存到本地文件即可。

 

2.读取出文件内容

代码如下:

/*** 读取本地文件内容转为String字符串* * @return* @throws Exception*/public static String fileRead() throws Exception {File file = new File("D:\\emo\\emo.html");// 定义一个file对象,用来初始化FileReaderFileReader reader = new FileReader(file);// 定义一个fileReader对象,用来初始化BufferedReaderBufferedReader bReader = new BufferedReader(reader);// new一个BufferedReader对象,将文件内容读取到缓存StringBuilder sb = new StringBuilder();// 定义一个字符串缓存,将字符串存放缓存中String s = "";while ((s = bReader.readLine()) != null) {// 逐行读取文件内容,不读取换行符和末尾的空格sb.append(s + "\n");// 将读取的字符串添加换行符后累加存放在缓存中System.out.println(66666);}bReader.close();String str = sb.toString();
//        System.out.println(str );return str;}

文件内容


 3.筛选出URL

代码如下:

/*** 正则匹配字符串中多个url* * @return* @throws Exception*/public static ArrayList<String> matchUrl() throws Exception {//多个URL的集合ArrayList<String> list = new ArrayList<String>();//示例字符串String str = "<div class=\"foy8gwIu\"><div class=\"KegQvOm6 bOlXi_Q3\"><div class=\"a2nFYRcv\">"+ "<img src=\"https://p3-pc-siq4%3D&amp;from=876277922\"><img src=\"https://p3-pc-s56as1d65samp;from=666666\">"+ "</div>";str = fileRead();//读取上一步内容Pattern pattern = Pattern.compile("<img [^>]*src=['\"]([^'\"]+)[^>]*>");Matcher matcher = pattern.matcher(str);while (matcher.find()) {String ss = matcher.group();
//		    System.out.println(ss.substring(10, ss.length()-2));list.add(ss.substring(10, ss.length() - 2));}return list;}

4.下载表情包

 代码如下:

/*** 下载网络文件到本地磁盘* * @param urlString 文件地址* @param saveDir   本地磁盘路径* @return*/public static String download(String urlString, String saveDir) {InputStream is = null;FileOutputStream os = null;try {// 构造URLURL url = new URL(urlString);// 打开连接URLConnection con = url.openConnection();// 输入流is = con.getInputStream();// 1K的数据缓冲byte[] bs = new byte[1024];// 读取到的数据长度int len;// 输出的文件流
//            String filename = System.getProperty("os.name").toLowerCase().contains("win") ?
//            		System.getProperty("user.home") + "\\Desktop\\temp.jpg" : "/home/project/temp.jpg";if (!new File(saveDir).exists()) {new File(saveDir).mkdirs();}String filename = saveDir + String.valueOf(System.currentTimeMillis()) + ".png";// 使用时间戳命名File file = new File(filename);os = new FileOutputStream(file, true);// 开始读取while ((len = is.read(bs)) != -1) {os.write(bs, 0, len);}return filename;} catch (Exception e) {e.printStackTrace();} finally {// 关闭链接try {if (null != os) {os.close();}} catch (IOException e) {e.printStackTrace();}try {if (null != is) {is.close();}} catch (IOException e) {e.printStackTrace();}}return null;}

 5.执行代码

public static void main(String[] args) throws Exception {
//		String url = "https://p3-pc-sign.douyinpic.com/obj/tos-cn-i-tsj2vxp0zn/852eb9046306409282f9ebf4e2414dff?x-expires=2006748000&amp;x-signature=YLdPxtVWwKfLJcIvExFzt84Clq4%3D&amp;from=876277922";String dir = "D:\\emotion\\";
//		System.out.println(download(url,dir));ArrayList<String> list = matchUrl();for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {String url = (String) iterator.next();download(url, dir);}//		fileRead();}

总结

今天突然想到之前想做一个自定义表情包面板,可以用表情来评论。后面再写一个自定义的表情面板插件。

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

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

相关文章

Webpack5 core-js和babel-loader区别和用法

文章目录 core-js是什么&#xff0c;有什么用&#xff1f;为什么使用了babel-loader对js进行兼容性配置还需要core-js?core-js的具体用法总结 core-js是什么&#xff0c;有什么用&#xff1f; core-js是一个流行的JavaScript库&#xff0c;它提供了对新的JavaScript特性、API…

Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】

文章目录 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】前言探究隐藏网络端口netstat分析隐藏网络端口的原理关键数据结构隐藏网络端口源码 效果演示 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】 前言 Rookit是个老生常谈的话…

大学python题库及答案解析,大学python程序设计题库

本篇文章给大家谈谈大学python题库及答案解析&#xff0c;以及python期末编程题及答案&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 发表时间&#xff1a;2020-07-07 一、填空题&#xff08;15分&#xff09; 使用print()函数将多个字符串’How’、’are ’…

关于ETL的两种架构(ETL架构和ELT架构) qt

&#xfeff;ETL&#xff0c;是英文 Extract-Transform-Load 的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform&#xff09;、加载&#xff08;load&#xff09;至目的端的过程。ETL一词较常用在数据仓库&#xf…

Qt+C++实现灯带动画运动位置变换移动跑马灯图片轮播

程序示例精选 QtC实现灯带动画运动位置变换移动跑马灯图片轮播 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC实现灯带动画运动位置变换移动跑马灯图片轮播>>编写代码&…

线段树模板12

线段树 洛谷上有两道线段树模板&#xff08;指模板1&#xff0c;模板2&#xff09;都是区间维护的&#xff0c;也就是说&#xff0c;都离不开lasytag的维护&#xff0c;为了提高效率&#xff0c;故使用了lasytag,这里看一下题 【模板】线段树 1 题目描述 如题&#xff0c;已…

JavaScript--WebStorage

目录 WebStorage概述 WebStorage分类 注意&#xff1a; localStorage方法 介绍&#xff1a; 常见方法&#xff1a; 案例演示&#xff1a; sessionStorage方法 介绍&#xff1a; 常见方法&#xff1a; 案例演示&#xff1a; WebStorage概述 WebStorage是HTML5中…

uni-app:实现数字文本框,以及左右加减按钮

效果 代码 <template><view><view classline3><view classline3_position><view classleft>数量<text>*</text></view> <view class"right"><view class"quantity_btn"><view class"…

Mysql存储引擎InnoDB

一、存储引擎的简介 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE 等。 1、InnoDB存储引擎 从MySQL5.5版本之后&#xff0c;默认内置存储引擎是InnoDB&#xff0c;主要特点有&#xff1a; &#xff08;1&#xff09;灾难恢…

git 如何切换到远程分支(remote)分支

要切换到远程分支&#xff0c;你可以按照以下步骤操作&#xff1a; 首先&#xff0c;使用git branch -r命令查看可用的远程分支列表。 选择你要切换到的远程分支&#xff0c;然后使用以下命令创建并切换到一个新的本地分支&#xff1a; git checkout -b <branch_name> o…

Docker入门——保姆级

Docker概述 ​ —— Notes from WAX through KuangShen 准确来说&#xff0c;这是一篇学习笔记&#xff01;&#xff01;&#xff01; Docker为什么出现 一款产品&#xff1a;开发—上线 两套环境&#xff01;应用环境如何铜鼓&#xff1f; 开发 – 运维。避免“在我的电脑…

理解和使用Ansible模块,简化自动化任务

Ansible是一款强大的自动化工具&#xff0c;用于管理和配置IT基础设施。在Ansible的世界中&#xff0c;模块&#xff08;Module&#xff09;是至关重要的组成部分。本文将深入探讨Ansible模块&#xff0c;了解它们如何简化自动化任务的执行过程。 Ansible模块是Ansible的核心组…

【肺炎分类数据集】数据量非常充足的新冠肺炎分类数据共享

一、肺炎数据集介绍&#x1f349;&#xff1a; 1.1 格式&#x1f388; 按照标准的格式分为了①训练集train&#xff08;134138575198张&#xff09;&#xff0c;②验证集val&#xff08;8816张&#xff09;&#xff0c;③测试集test&#xff08;234390624张&#xff09;&#…

如何使用第三方库CryptoJS来计算base64二进制原文的SM3算法十六进制哈希值

1、引入CryptoJS库。 <script src"https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>2、将base64字符串转换为字节数组。你可以使用CryptoJS.enc.Base64.parse()方法来实现&#xff1a; var base64Text "SGV…

C++学习笔记总结练习:正则表达式

正则表达式 目录 regex正则表达式的定义regex_match/search/replace正则表达式的三个操作smatch、sregex_iterator正则表达式的结果对象以及与其配套的迭代器。 参考文献 正则表达式总结 1 正则表达式基础 不考虑子表达式的内容 头文件 #include<regex>库组件 库组件作…

React Dva项目 简单引入models中的所有JS文件

我们前面接触的 Dva项目 models目录下的文件还要一个一个引入 其实体验并不是很好 而且如果项目很大那就比较麻烦了 我们可以在 models 下创建一个 index.js 文件 编写代码如下 const context require.context("./", false, /\.js$/); export default context.key…

乐鑫科技 2022 笔试面试题

岗位:嵌入式软件实习生。 个人情况:本科双非电子信息工程,硕士华五软件工程研一在读;本科做过一些很水的项目 ,也拿项目搞了一些奖,相对来说嵌入式方向比较对口。 时间线及面试流程 2021.04.02 笔试 题目分为选择题和编程题,选择题二十题,编程题两题; 选择题基本…

【Go】Go数据操作 - 处理JSON文件

目录 何为JSON 编码JSON 解码JSON 延伸拓展 何为JSON JSON (JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。JSON最初是 JavaScript的一部分&#xff0c;后由于便于快速编写的特性&#xff0c;被开发者独立出来。基本上所有的语言都支持JSON数据的…

冠达管理:A股三大指数震荡整理 机构看好反弹趋势延续

周一&#xff0c;沪深两市呈弱势震动格式&#xff0c;创业板指领跌。到收盘&#xff0c;上证综指跌0.59%&#xff0c;报3268.83点&#xff1b;深证成指跌0.83%&#xff0c;报11145.03点&#xff1b;创业板指跌1%&#xff0c;报2240.77点。 资金面上&#xff0c;沪深两市昨日合计…