刷到老哥这个帖子,有感而发,因为python只会一点语法,其他一概不知 原贴地址:https://www.52pojie.cn/thread-1565420-1-1.html
然后自己动手丰衣足食,说干就干,打开了我的IDEA,复习一下io流了
这里是获取地址里面的json数据,使用的是字符流ps:有便捷一点的方法麻烦大佬评论区指点一下
[Java] 纯文本查看 复制代码 public static String test65(int start) {
BufferedReader reader = null;
StringBuffer sb = new StringBuffer();
String initUrl = "http://bz.hzwdd.cn/api.php?cid=6&start="+start+"&count=10";
URL url = URLUtil.url(initUrl);
try {
reader = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));
String temp = null;
if ((temp= reader.readLine()) != null) {
sb.append(temp);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
这里就是下载的一个方法,字节流读一个写一个哈哈哈,真像我刚学java的时候使用的ps:这里的URLUtil使用的是hutool工具记得使用完关闭嗷
[Java] 纯文本查看 复制代码 public static void test49(String urll,String fileName) throws IOException {
URL url = URLUtil.url(urll);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(5 * 1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
//获取自己数组
byte[] getData = readInputStream(inputStream);
//文件保存位置
File saveDir = new File("D:/test/test/");
if (!saveDir.exists()) {
saveDir.mkdir();
}
File file = new File(saveDir + File.separator + fileName+".jpg");
FileOutputStream fos = new FileOutputStream(file);
fos.write(getData);
if (fos != null) {
fos.close();
}
if (inputStream != null) {
inputStream.close();
}
System.out.println("info:" + url + " download success");
}
这里就单独提出另一个方法获取字节 记得使用完关闭哦~
[Asm] 纯文本查看 复制代码 public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
然后就是亘古不变的main方法啦~ 这里用的是阿里的fastjson
[Java] 纯文本查看 复制代码 public static void main(String[] args) {
String s = test65(0);
System.out.println("s = " + s);
JSONObject jsonObject = JSONObject.parseObject(s);
JSONObject json1 = (JSONObject) jsonObject.get("data");
int total_page = (int) json1.get("total_page");
for (int i = 0; i < total_page; i++) {
s = test65(i);
System.out.println("s = " + s);
jsonObject = JSONObject.parseObject(s);
json1 = (JSONObject) jsonObject.get("data");
List<Map<String,String>> list = (List<Map<String, String>>) json1.get("list");
for (Map<String, String> map : list) {
try {
test49(map.get("url"),map.get("tag")+map.get("id"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
然后运行起来就是这样的
然后路径也能成功下载,麻烦大佬指点一下改进,多学多问多看嘛嘿嘿
|