`
悲剧了
  • 浏览: 145309 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

下载上传wget,附带java代码一份

 
阅读更多
场景1:
项目放到国外服务器,配置ftp,上传老掉线,网速实在不如人意

解决:
wget方式下载,-c就ok,把你的东西放到一个url可以直接下载的地方,俺测试下了360云盘,报错不支持,可以找速度快并且稳定的地方上次,不行那就自己动手,放nginx里面,远程下载,不用操心
nuhop xxx & ,到时候看nohup.out就ok

场景2
收集网页分析数据,wget方式可以下载全站的,如果觉得速度太慢,不给力,自己动手
附带简单的下载代码

public class SimpleDownLoadHtmlUtil  {

	public Logger log = Logger.getLogger(getClass());

	public static class DownLoadParams {
		// 下载链接
		private String uri;
		// 开始Id
		private int startId;
		// 结束id
		private int endId;
		// 下载存放目录
		private String downLoadDir;

		public String getUri() {
			return uri;
		}

		public void setUri(String uri) {
			this.uri = uri;
		}

		public int getStartId() {
			return startId;
		}

		public void setStartId(int startId) {
			this.startId = startId;
		}

		public int getEndId() {
			return endId;
		}

		public void setEndId(int endId) {
			this.endId = endId;
		}

		public String getDownLoadDir() {
			return downLoadDir;
		}

		public void setDownLoadDir(String downLoadDir) {
			this.downLoadDir = downLoadDir;
		}
		
	}

	public void downLoadHtmls(DownLoadParams downLoadParams) {

		HttpClient httpClient = new HttpClient();
		long start = System.currentTimeMillis();
		String url =downLoadParams.getUri();
		for (int i = downLoadParams.getStartId(); i <= downLoadParams
				.getEndId(); i++) {
			try {
				long startP = System.currentTimeMillis();
				String currentUrl = url + i;
				GetMethod getMethod = new GetMethod(currentUrl);
				httpClient.executeMethod(getMethod);
				saveFile(getMethod.getResponseBodyAsStream(),
							downLoadParams.getDownLoadDir() + i + ".html");
				long endP = System.currentTimeMillis();
					log.info("waste" + (endP - startP) + "----rid" + i);
			} catch (Exception e) {
				log.error("exception" + e + "-->>" + i);
			}
		}
		long end = System.currentTimeMillis();
		log.info("waste over" + (end - start));

	}

	public static void saveFile(InputStream in, String filePath)
			throws IOException {
		File file = new File(filePath);
		file.createNewFile();
		FileOutputStream fileOutputStream = new FileOutputStream(file);
		IOUtils.copy(in, fileOutputStream);
		fileOutputStream.close();
		in.close();
	}
	/**
	 * 数据量大使用,线程数根据cpu个数与网络决定,常规为cpu个数的倍数,可以测试使用,最少为4,
	 * @param downLoadParams
	 * @param threadCount
	 */
	public  static void SpeedUpDownd(DownLoadParams downLoadParams,int threadCount){
		 class  MultiProcess implements Runnable {
			 private DownLoadParams downLoadParams;
			
				public void setDownLoadParams(DownLoadParams downLoadParams) {
					this.downLoadParams = downLoadParams;
				}
			@Override
			public void run() {
				new SimpleDownLoadHtmlUtil().downLoadHtmls(downLoadParams);
			}
		}
		
		int total = downLoadParams.endId-downLoadParams.startId+1;
		ArrayBlockingQueue<Runnable> arrayQue = new ArrayBlockingQueue<Runnable>(
				threadCount - 4);
		ExecutorService service = new ThreadPoolExecutor(50, 50, 2,
						TimeUnit.DAYS, arrayQue);
		for (int i = 0; i <threadCount; i++) {
			MultiProcess multiProcess=new MultiProcess();
			DownLoadParams currentParams=new DownLoadParams(); 
			currentParams.setStartId((total/threadCount)*i+1);
			currentParams.setEndId((total/threadCount)*(i+1));
			currentParams.setDownLoadDir(downLoadParams.getDownLoadDir());
			currentParams.setUri(downLoadParams.getUri());
			multiProcess.setDownLoadParams(currentParams);
			service.execute(multiProcess);
		}
		service.shutdown();
		
	}

	
	

}



2
0
分享到:
评论

相关推荐

    wget+jdk.zip

    wget是一款功能强大的命令行下载工具,广泛应用于Linux系统中,它可以非交互式地从互联网上下载文件,支持HTTP、HTTPS和FTP协议,甚至可以通过代理服务器进行下载。wget的特性包括断点续传、自动重试以及在指定时间...

    wget-1.11.4-1源代码

    总的来说,`wget-1.11.4-1源代码`提供了学习网络下载工具实现、深入理解HTTP/FTP协议以及Linux编程的机会,对开发者来说是一份宝贵的资源。通过研究和实践,我们可以更好地理解和利用wget的强大功能,或者为它添加新...

    wget网站下载工具

    wget是一款强大的命令行网络下载工具,它在Linux系统中被广泛应用,同时也可在Windows等其他操作系统上通过模拟环境或专门的版本进行使用。wget以其非交互式、后台运行、续传功能以及广泛支持各种协议(如HTTP、...

    wget-1.16最新代码

    这里有官方代码有关wget-1.5.3至wget-1.16的全部当前最新代码,只为拿来分享与大家学习共进步。

    下载工具WGET x64

    WGET是一款功能强大的开源下载工具,尤其在Windows x64系统上表现优秀。它支持通过命令行界面执行HTTP、HTTPS和FTP协议的下载任务,具备断点续传、自动重试、镜像下载等多种高级特性,使得用户能够高效、灵活地管理...

    wget下载 VS2008 代码

    wget下载 VS2008 代码

    linux 离线安装wget

    在Linux系统中,`wget`是一个非常实用的命令行工具,用于从互联网上下载文件,尤其在没有图形化界面或者网络连接不稳定的情况下,其离线安装就显得尤为重要。本篇文章将详细阐述如何在Linux环境下离线安装`wget`,...

    wget wget wget wget

    `wget`是一个强大的命令行下载工具,主要用于在Unix-like操作系统(包括Linux和macOS)上从互联网上下载文件。它的名字是“World Wide Web”和“get”的组合,表明其主要功能是从Web获取文件。`wget`的特点在于其非...

    windows wget.exe免费下载

    wget.exe 是一个命令行工具,主要用于在Windows操作系统中下载网页、文件和其他互联网资源。它源自于开源的GNU项目,功能强大且高度可配置,适用于自动化批量下载任务。wget支持HTTP、HTTPS和FTP协议,同时也能够...

    使用wget下载整个网页

    标题“使用wget下载整个网页”涉及的是一个网络爬虫工具——wget,它是一个在命令行环境中使用的开源工具,主要用于从互联网上下载文件或整个网站。本文将深入介绍wget的使用方法及其相关知识点。 wget,全称World ...

    wget网络多协议下载

    wget是一款强大的网络下载工具,它被广泛应用于Linux系统中,同时也可跨平台运行在其他Unix-like系统上。wget以其可靠性和自动化特性著称,支持HTTP、HTTPS和FTP三种主要的互联网协议,使得用户能够方便地从Web...

    centos下wget安装包

    在Linux操作系统中,`wget`是一个非常实用的命令行工具,用于从互联网上下载文件。它支持HTTP、HTTPS和FTP协议,甚至可以通过代理服务器进行下载。`wget`的一个显著特点是其非交互式操作,能够在后台运行,非常适合...

    wget命令行下载工具

    `wget`命令行下载工具是Linux环境中广泛使用的网络数据抓取工具,它允许用户通过命令行界面批量下载文件和整个网站。在没有图形用户界面(GUI)或者远程服务器管理的场景下,`wget`显得尤为实用。这个工具以其强大的...

    wget-1.20.3离线安装包.zip

    wget是Linux系统中一个强大的命令行工具,用于从互联网上下载文件。它的全名是“World Wide Web Get”,顾名思义,它可以从万维网上抓取文件,无论是单个文件还是整个网站。wget以其非交互式、后台运行以及断点续传...

    wget1.21.4.zip安装包

    总的来说,wget1.21.4.zip安装包提供了一种方便的方式在Windows系统中使用wget工具,用户只需简单几步操作即可享受到wget强大的文件下载能力。在日常工作中,wget可以用于自动下载网页资源、定期更新备份、搭建本地...

    支持中文目录wget版本,linux版本

    在wget的源代码中 src/url.c 这个文件中有wget如何处理文件名的函数url_file_name() url_file_name()在根据url的形式判断该保存为什么样的文件名,并进行了多方面的考虑,最终该函数调用了append_uri_pathel(),该...

    wget源码安装包1.20版lz gz

    这个“wget源码安装包1.20版lz gz”指的是wget的1.20版本源代码,压缩格式为lz和gz,通常这样的文件扩展名组合表示文件已经被lz(LZMA,一种高效的压缩算法)和gzip(一种通用的数据压缩程序)双重压缩。 源码安装...

    win32_wget

    "win32_wget"是一个专为Windows 32位操作系统设计的版本,它基于开源的网络下载工具wget。wget是互联网上广泛使用的命令行工具,用于非交互式下载网络上的文件,支持HTTP、HTTPS和FTP协议,以及通过HTTP代理进行下载...

    wget的完整代碼

    `wget`是一个强大的命令行工具,用于从互联网上下载文件,包括整个网站的镜像。在Linux、Unix以及macOS等操作系统中广泛使用,它支持HTTP、HTTPS和FTP协议,还可以通过代理服务器工作。`wget`的特点在于其非交互式...

    VC写的小巧多线程下载工具30K哦,win32wget, 附代码

    标题中的“VC写的小巧多线程下载工具30K哦,win32wget”指的是一个使用Microsoft Visual C++(简称VC)编写的轻量级下载程序,该程序只有大约30KB的大小,实现了多线程下载功能,并且其灵感或设计可能来源于Linux下...

Global site tag (gtag.js) - Google Analytics