Java 图片爬虫,java打包jar文件
1. Java 图片爬虫,制作 .jar 文件
spider.java
spider.java
高清图片api : https://www.xwboke.cn/api/api.php ,每请求一次,会更换一张高清大图。
API1:
API2
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public class spider{
    public static void main(String[] args) throws Exception{
        long start = System.currentTimeMillis();
	System.out.print("start:");
	System.out.println(start);
	for(int i=1;i<=5;i++){
	    String url="https://www.xwboke.cn/api/api.php";
	    getImg(url,i);
	    System.out.println("Finished"+i);
	}
	long end=System.currentTimeMillis();
	System.out.println("run time: "+(end-start)/1000+" s");
    }
    private static void getImg(String u, int i){
        URL url;
	try{
	    url = new URL(u);
	    HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
	    conn.setRequestMethod("GET");
	    conn.setConnectTimeout(5*1000);
	    InputStream in = conn.getInputStream();
	    byte[] data = readInputStream(in);
	    File f = new File(i+".jpg");
	    FileOutputStream out = new FileOutputStream(f);
	    out.write(data);
	    out.close();
	}catch(IOException e){
	    e.printStackTrace();
	}
    }
    private static byte[] readInputStream(InputStream ins) throws IOException{
        ByteArrayOutputStream out = new ByteArrayOutputStream();
	byte[] buffer = new byte[1024];
	int len = 0;
	while ((len = ins.read(buffer)) != -1){
	    out.write(buffer, 0, len);
	}
	ins.close();
	return out.toByteArray();
    }
}
编译: javac spider.java
执行:java spider
root@kali:~/Desktop# java spider
start:1536475728353
Finished1
Finished2
Finished3
Finished4
Finished5
run time: 19 s
root@kali:~/Desktop#
制作 jar 文件
jar cvf 5imgGet.jar spider.class
此时直接运行:java -jar 5imgGet.jar
会报错:

直接将jar文件解压开,查看其中的 META-INF/MANIFEST.MF 文件,
root@kali:~/Desktop/tmp# cat META-INF/MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.8.0_151 (Oracle Corporation)
root@kali:~/Desktop/tmp#
只有两行,在第三行添加 Main-Class: spider,指定主类

保存后执行 :jar umf MANIFEST.MF 5imgGet.jar 

这样,这个jar文件就可以执行了。


添加执行权限

reference : https://www.cnblogs.com/liang-io/p/9338184.html
Java 图片爬虫,java打包jar文件的更多相关文章
- Intellij打包jar文件,“java.lang.SecurityException: Invalid signature file digest for Manifest main attrib
		
下面是使用Intellij 打包jar文件的步骤,之后会有运行jar文件时遇到的错误. 打包完成. ================================================== ...
 - Eclipse将android项目打包jar文件
		
Eclipse+android打包jar文件 蔡建良 2016-3-12 以Android-SlideExpandableListView开源框架为例,将源码Library打包成jar文件并包含R.c ...
 - 关于在打包Jar文件时遇到的资源路径问题(二)
		
在关于<关于在打包Jar文件时遇到的资源路径问题(一)>中,以及描述了当资源与可执行JAr分离时的资源路径代码的编写问题,后来想了想,为什么将<Java核心技术卷一>中的程序1 ...
 - 关于在打包Jar文件时遇到的资源路径问题(一)
		
当我们将程序写好,并进行打包成Jar文件时,通常都带有各种资源,这些资源可以是图像或者声音文件,也可以是别的如文本文件或二进制文件等,这些资源都和代码密切相关.例如在一个JPanel类上显示一些可能变 ...
 - AndroidStduio3.0 使用gradle将module打包jar文件
		
AndroidStduio3.0使用gradle将module打包jar文件,首先需要安装gradle. 打开控制台输入 open -e .bash_profile 命令,就可以打开 ...
 - Java中基本的打包jar和war文件(包括eclipse打包操作)
		
前言: 为什么要打jar包? 1.举个例子,当编写一个工具类库,里面有十几个类,每个类对应一个class文件时,为了方便别人调用,是不是要装在一个文件中,方便传递和引用. 2.打jar包还有一个好处, ...
 - java  打包jar文件以在没有安装JDK或JRE的机子上运行
		
前言: java号称“一次编译,到处运行”,但这有个前提,那就是你的机子上得安装java环境.对于开发人员或其他一些比较懂计算机的人来说这没什么,但是对于一些不懂计算机的人来说这会很麻烦,他们更希望的 ...
 - Java GUI使用exe4j打包exe文件
		
exe4j下载地址:http://blog.csdn.net/cciii/article/details/17083531 1. 在MyEclipse将java项目打包成可执行jar文件.项目结构如 ...
 - [转载] Java中动态加载jar文件和class文件
		
转载自http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...
 
随机推荐
- [Swift]LeetCode266.回文全排列 $ Palindrome Permutation
			
Given a string, determine if a permutation of the string could form a palindrome. For example," ...
 - [Swift]LeetCode438. 找到字符串中所有字母异位词 | Find All Anagrams in a String
			
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...
 - springboot中实现多数据源
			
springboot中实现多数据源 1.什么场景需要多数据源 业务读写分离 业务分库 业务功能模块拆分多库 2.常见的多数据源的方案 按照数据源分别把mapper和entity放到不同的package ...
 - Visual Studio 2010软件安装教程
			
链接:https://pan.baidu.com/s/10FeLlKpzFcb9yUjm3ZECsg 提取码:pup1 复制这段内容后打开百度网盘手机App,操作更方便哦 1.右击软件压缩包,选择解压 ...
 - 【Spark篇】---SparkStreaming算子操作transform和updateStateByKey
			
一.前述 今天分享一篇SparkStreaming常用的算子transform和updateStateByKey. 可以通过transform算子,对Dstream做RDD到RDD的任意操作.其实就是 ...
 - Google、B站……那些神奇的404页面,你看过多少?
			
据说在第三次科技革命之前,互联网的形态就是一个大型的中央数据库,这个数据库就设置在 404 房间里面.那时候所有的请求都是由人工手动完成的,如果在数据库中没有找到请求者所需要的文件,或者由于请求者写错 ...
 - C++版 - UVa1585 Score - 题解
			
C++版 - UVa1585 Score - 题解 <算法竞赛入门经典(第二版)> 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 问题描述: 给出一个由O和X ...
 - Vimtutor(中文版)学习笔记各章小结
			
在Bash中直接输入 vimtutor 打开新世界!通常阅读完需要25-30分钟不等,像玩游戏一样学会vim,然后爱不释手 里面设置了很多例子通过实践操作来学,这里仅把vimtutor上的每一章小结记 ...
 - 通俗易懂讲解TCP流量控制机制,了解一下
			
上篇文章讲了TCP拥塞控制机制的原理,没看过的不妨看下:5分钟读懂拥塞控制,这篇文章讲讲TCP流量控制机制. 一.为什么需要流量控制? 双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发 ...
 - 大战Java虚拟机【0】——目录
			
发现一直在上层应用更新博客的我,突然发现也是时候同时更新一波基础知识了.然后就发现了一个点我还没有更新过,那就是Java虚拟机. 很多人在学习Java的时候都或多或少接触过一点,然后几乎有下面几种情况 ...