下载网络文件到本地

这篇具有很好参考价值的文章主要介绍了下载网络文件到本地。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

目录

前言

操作步骤

1.引入

2.读取出文件内容

 3.筛选出URL

4.下载表情包

总结


前言

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

一、操作步骤

1.引入

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

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

下载网络文件到本地,JAVAWEB,开发语言,java

 

2.读取出文件内容

代码如下:

/**
	 * 读取本地文件内容转为String字符串
	 * 
	 * @return
	 * @throws Exception
	 */
	public static String fileRead() throws Exception {
		File file = new File("D:\\emo\\emo.html");// 定义一个file对象,用来初始化FileReader
		FileReader reader = new FileReader(file);// 定义一个fileReader对象,用来初始化BufferedReader
		BufferedReader 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;
	}

文件内容

下载网络文件到本地,JAVAWEB,开发语言,java


 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 {
			// 构造URL
			URL 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();

	}

总结

今天突然想到之前想做一个自定义表情包面板,可以用表情来评论。后面再写一个自定义的表情面板插件。文章来源地址https://www.toymoban.com/news/detail-639690.html

到了这里,关于下载网络文件到本地的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 字节流及存放本地文件上传和下载文件

    之前的文章有写过 vue+springboot使用文件流实现文件下载 实现如何通过 的形式进行下载文件 但是它对于很多业务场景相对适用性不是很广泛。 以及 elementUI加springboot实现上传excel文件给后端并读取excel 也只能是通过elementui的元素类型进行上传。 因此,本次文章将通过两种方式

    2024年02月15日
    浏览(43)
  • 下载 axios.js 文件到本地

    1.网址:GitHub - axios/axios: Promise based HTTP client for the browser and node.js 2. 3.   4.直接引用script src=\\\"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js\\\"/script

    2024年02月08日
    浏览(32)
  • Django将本地文件给用户下载

    访问这个函数,需要传递一个文件的路径,我的方法是通过一个button按钮,发送一个get请求,携带的是文件的路径 导入一些依赖包(非必要) messages的作用是设置提示框,这个按需自己设计就好了,不需要就删了 设置提示框可以参考另一篇文章Django后台设置提示框(消息框)

    2024年02月13日
    浏览(37)
  • uniapp下载文件保存到手机本地

    最近接到一个项目需求,下载各种格式文件保存到手机本地 遇到的问题如下: 1、iphone手机无法保存到文件中 2、Android手机文件保存的位置不易查找 3、Android手机文件存储名称非文件原名,而是以时间戳命名 不可抗因素:   1、iphone自带的文件管理功能不能自动扫描各个APP下

    2024年02月11日
    浏览(45)
  • 使用Xshell 将Linux文件下载到本地或者将本地的文件上传到Linux

    第一步:在Linux中安装上传下载功能的软件 第二步:将Linux文件下载到本地:此时我的Linux桌面上有一个叫test.c的文件,我要将它下载到windows桌面上。 在Linux终端输入: 这里使用的是相对路径,使用绝对路径也可以。输入此命令后按下回车键会弹出一个对话框,选择你要存储

    2024年02月07日
    浏览(62)
  • 【微信小程序】下载文件到本地并使用

    1.使用小程序文件管理API (wx.getFileSystemManager()) 2.1 判断要下载的文件是否存在(accessSync)于本地 通过 try 去判断 进入catch则 没有存在于本地 2.2 通过wx.downloadFile  设置filePath 下载文件保存本地 3.读取(readFileSync)本地文件并使用 catch 处理未加载到数据 重新 wx.downloadFile  设置

    2024年02月09日
    浏览(159)
  • 使用Java实现远程文件下载到本地目录

    今天开发时遇见了一个下载附件的需求,他的附件是存在一个网盘里查询时只是给我返回了一个https的路径,需要通过这个路径把附件下载到本地的目录里 这里我使用的是网上搜索的图片路径做了一下测试仅供参考 如正文介绍 使用Java实现远程文件下载到本地目录记录就到此

    2024年02月12日
    浏览(49)
  • html利用a标签实现下载本地的文件

            在写html页面的时候,需要在网页上提供一个下载按钮可以下载我自己电脑中的文件。我已经知道了该文件的路径,但是之前看了很多文章都没找到正确办法,一直不知道如何能够下载本地的文件,经过不断实验发现,可以利用a标签中的downlo属性,同时将href属性设

    2023年04月15日
    浏览(42)
  • 如何SCP从服务器远程下载文件到本地

    1、SCP的命令格式如下:scp [参数] [原路径] [目标路径] (1)复制本地文件abc.tar.gz到远程主机123.123.123.123上: 1 scp -P 2233 /home/abc.tar.gz root@123.123.123.123:/root/abc.tar.gz 其中:-P 2233表示端口,如果你的原VPS主机没有修改过端口,使用的默认的22的话,可不用写-P 2233这样的。 (2)获取远程服

    2024年02月11日
    浏览(50)
  • 使用Git LFS下载大文件到本地(Linux)

    很多时候我们想要从huggingface中下载模型文件,若直接clone往往下载不完全. 下载文件后可通过以下命令来查看该文件各个文件的大小   如下图,第一行total显示整个目录的文件大小,下面即为每个文件的大小 尤其是对于GB级文件而言,很多时候都无法完全clone,且由于直接git会不

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包