不得不说第三方包才是快速实现程序的关键
Maven
插件Maven-search
方便简单的利用Maven管理第三方包
参数解析
com.beust.jcommander.Parameter
利用注解+反射机制还是很简洁的
package org.sec.config;import com.beust.jcommander.Parameter;public class Command {@Parameter(names = {"-h", "--help"}, description = "Help Info", help = true)public boolean help;@Parameter(names = {"-u"},description = "Target Url")public String url;@Parameter(names = {"-k"},description = "Target Key")public String targetKey;}
import com.beust.jcommander.JCommander;import org.sec.config.Command;Command command = new Command();JCommander jc = JCommander.newBuilder().addObject(command).build();jc.parse(args);if (command.help) {jc.usage();return;}if (command.url == null || command.url.equals("")) {return;}String url = command.url;
HTTP请求
com.github.kevinsawicki.http
感觉还是比较方便
package Main;import com.github.kevinsawicki.http.HttpRequest;import java.util.HashMap;import java.util.Map;public class Main {public static void setProxy(boolean proxy) {if (proxy){HttpRequest.proxyHost("127.0.0.1");HttpRequest.proxyPort(8080);}}public static void main(String[] args) {//代理setProxy(false);//设置header头Map<String,String> Headers=new HashMap<String,String>();Headers.put("Cookie","RK=429ojE4A1p; ptcz=0dab32db1b9284ca7c7709c011daf934450981ea40e0a9e833b30f9b25299efb; pgv_pvid=8801185994; fqm_pvqid=a1642ff7-6dc0-4415-871a-113eb5180925; fqm_sessionid=9b75fa82-b8eb-4bf4-850a-f26c4da641e9; pgv_info=ssid=s3168114344; ts_uid=8507159015; _qpsvr_localtk=0.8180174642746458; ts_last=y.qq.com/; ts_refer=cn.bing.com/");Headers.put("Content-Length","661");Headers.put("Pragma","no-cache");Headers.put("Cache-Control","no-cache");Headers.put("Sec-Ch-Ua","\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"");Headers.put("Accept","application/json");Headers.put("Content-Type","application/x-www-form-urlencoded");Headers.put("Sec-Ch-Ua-Mobile","?0");Headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36");Headers.put("Sec-Ch-Ua-Platform","\"Windows\"");Headers.put("Origin","https://y.qq.com");Headers.put("Sec-Fetch-Site","same-site");Headers.put("Sec-Fetch-Mode","cors");Headers.put("Sec-Fetch-Dest","empty");Headers.put("Referer","https://y.qq.com/");Headers.put("Accept-Encoding","gzip, deflate");Headers.put("Accept-Language","zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6");Headers.put("Connection","close");String Url= "http://u.y.qq.com/cgi-bin/musics.fcg?_=1647737559657&sign=zzb4b5adf4emghrndbrslfbaaohgt85qd8c2607f";String Data = "{"comm":{"cv":4747474,"ct":24,"format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"yqq.json","needNewCode":1,"uin":0,"g_tk_new_20200303":5381,"g_tk":5381},"req_1":{"module":"music.musicHall.MusicHallPlatform","method":"GetFocus","param":{}},"req_2":{"module":"newalbum.NewAlbumServer","method":"get_new_album_area","param":{}},"req_3":{"module":"newalbum.NewAlbumServer","method":"get_new_album_info","param":{"area":1,"sin":0,"num":20}},"req_4":{"module":"musicToplist.ToplistInfoServer","method":"GetAll","param":{}},"req_5":{"module":"MvService.MvInfoProServer","method":"GetNewMv","param":{"style":0,"tag":0,"start":0,"size":40}}}";//发送数据包HttpRequest res = HttpRequest.post(Url).headers(Headers).send(Data).followRedirects(false).readTimeout(5000);System.out.println(String.format("StatCode:%s",res.code()));System.out.println(String.format("Response:%s",res.body()));}}
swing美化
com.formdev.flatlaf
一句话美化
FlatLightLaf.setup();//按照自己喜欢的样式去setup即可
Java爬虫类
Jsoup
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import java.io.IOException;public class Main {public static void main(String[] args) {Document document = null;try {//从URL加载文档,使用Jsoup.connect()方法从URL加载HTMLdocument = Jsoup.connect("https://www.baidu.com/").get();} catch (IOException e) {e.printStackTrace();}//调用document.title()方法获取HTML页面的标题System.out.println(document.title());}}
还可以携带参数
Document doc = Jsoup.connect("http://example.com").data("query", "Java").userAgent("Mozilla").cookie("auth", "token").timeout(3000).post();
获取favicon
import com.github.kevinsawicki.http.HttpRequest;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import java.io.IOException;import java.util.HashMap;import java.util.Map;public class Main {public static void main(String[] args) {Document document = null;String favImage = "Not Found";String url = "https://i.hacking8.com/";try {document = Jsoup.connect(url).get();Element element = document.head().select("link[href~=.*\\.(ico|png)]").first();if (element == null){element = document.head().select("meta[itemprop=image]").first();if (element != null){favImage = element.attr("content");}}else{favImage = element.attr("href");}} catch (IOException e) {e.printStackTrace();}System.out.println(document.title());if (favImage.contains("Not")){System.out.println("在源代码中没有找到图标");Map<String,String> Headers=new HashMap<String,String>();Headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36");HttpRequest res = HttpRequest.post(url+"/favicon.ico").headers(Headers).followRedirects(false).readTimeout(5000);System.out.println(res.code());System.out.println(url+"/favicon.ico");if (res.code()==200){System.out.println(url+"/favicon.ico");}}else {System.out.println(url+favImage);}}}
获取所有链接
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import java.io.IOException;public class Main{public static void main(String[] args) {Document document;try {document = Jsoup.connect("https://i.hacking8.com/").get();Elements links = document.select("a[href]");for (Element link : links){System.out.println("link : " + link.attr("href"));System.out.println("text : " + link.text());}} catch (IOException e) {e.printStackTrace();}}}
多注重学习select过滤器
