必应的壁纸一个一个下有点麻烦,写个小爬虫批量下载,代码如下:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 必应壁纸下载* javac -encoding UTF-8 -cp .;C:\Users\administered\Downloads\jsoup-1.12.1.jar WallpaperDownload.java* java -cp .;C:\Users\administered\Downloads\jsoup-1.12.1.jar WallpaperDownload E:\\wallpaper*/
public class WallpaperDownload {private static final String BY_PREFIX = "https://bing.ioliu.cn";public static void main(String[] args) {// 运行时指定一个本地下载路径String path = "";for(int i=0; i<args.length; i++){path = args[i];}if(path == null || path.length()==0){path = "E:\\wallpaper";}File filePath = new File(path);if(!filePath.exists()){System.out.println("创建目录:" + filePath.getName());filePath.mkdirs();}System.out.println("下载位置:" + filePath.getName());download(path);}public static void download(String path) {long start = System.currentTimeMillis();String pageHtml = "https://bing.ioliu.cn/ranking";for (int i = 1; i <= 105; i++) {if (i > 1) {pageHtml = pageHtml + "?p=" + i;}try {String[] links = getAddress(pageHtml);execute(links, path);} catch (IOException e) {e.printStackTrace();}pageHtml = "https://bing.ioliu.cn/ranking";}long end = System.currentTimeMillis();long time = (end - start) / 1000;System.out.println("下载耗时:" + time);}/*** 下载图片** @param links* @param path  下载位置* @throws IOException*/public static void execute(String[] links, String path) throws IOException {if (!path.endsWith("\\")) {path = path + "\\";}for (int i = 0; i < links.length; i++) {HttpURLConnection urlConnection = getConnection(links[i]);InputStream ins = urlConnection.getInputStream();String imageName = links[i].substring(links[i].lastIndexOf("/") + 1).split("\\?")[0];File file = new File(path + imageName + ".jpg");OutputStream outputStream = null;if (!file.exists()) {outputStream = new FileOutputStream(file);int readCount;byte[] bytes = new byte[10240];while ((readCount = ins.read(bytes)) != -1) {outputStream.write(bytes, 0, readCount);}System.out.println("[" + imageName + "] download finished ...");} else {System.out.println(file.getName() + " existed ...");}}}/*** 获取下载链接地址** @return* @throws IOException*/public static String[] getAddress(String htmlPage) throws IOException {System.out.println("get [" + htmlPage + "] info ...");HttpURLConnection connection = getConnection(htmlPage);InputStream is = connection.getInputStream();String newLine = System.getProperty("line.separator");BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));StringBuilder result = new StringBuilder();String line;String html;while ((line = reader.readLine()) != null) {result.append(line + newLine);}html = result.toString();Document doc = Jsoup.parseBodyFragment(html);html = doc.body().html();String[] links = extractLinks(html);return links;}/*** 提取图片链接** @param html*/static String[] extractLinks(String html) {List<String> list = new ArrayList<>();String pattern = "/photo/.*_.*\\?force=download";Pattern r = Pattern.compile(pattern);Matcher m = r.matcher(html);while (m.find()) {list.add(m.group());}String[] results = new String[list.size()];for (int i = 0; i < list.size(); i++) {results[i] = BY_PREFIX + list.get(i);}return results;}/*** 获取连接** @param urlStr* @return*/public static HttpURLConnection getConnection(String urlStr) {HttpURLConnection urlConnection = null;try {URI uri = new URI(urlStr);URL url = uri.toURL();urlConnection = (HttpURLConnection) url.openConnection();} catch (URISyntaxException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return urlConnection;}
}

附:依赖HTML格式化jar(Jsoup)

转载于:https://www.cnblogs.com/rookiek/p/11359865.html

java 必应壁纸批量下载相关推荐

  1. 【java】 文件批量下载并压缩为zip压缩包

    [java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...

  2. Python实现壁纸批量下载

    Python实现壁纸批量下载 最近想要一些新的壁纸,但是从网站上面找一张一张下载太慢了,所以写了个爬虫批量下载壁纸. 先看看实现的效果 需要的包: requests.bs4 .os.re 源码: # ...

  3. Python爬虫 - wallhaven任意页面下的壁纸批量下载

    基于Python 任意页面下的壁纸批量下载 github Maxpagenum 爬取页数 fpath 保存路径 url 基础地址 import requests import re import ti ...

  4. 使用python实现高清壁纸批量下载

    一.高清壁纸批量下载 1.概述 此代码是使用python多线程批量下载高清壁纸的一个小脚本,代码略为简陋. 此代码仅供学习与交流,请不要用于违法用途. import requests from lxm ...

  5. java 解析m3u8的实例_使用java线程池批量下载m3u8。合并mp4.

    使用java线程池批量下载m3u8合并mp4. 看了线程池的demo,然后就想下载文件试试. 代码未必规范,多多建议. 大家可以自行修改,满足自己的需求. 还需要深入学习一下线程池. 给俺个星星⭐,可 ...

  6. 必应每日壁纸批量下载

    背景 桌面壁纸好久没有更新,感到有些审美疲劳.必应每日推荐高质量壁纸,有好心人已经做成了专门的必应壁纸站,更新桌面壁纸,顺便练手爬虫小程序. 分析 第一步提取出全部图片的链接,单个页面正则提取后,加个 ...

  7. python代码壁纸-python实现壁纸批量下载代码实例

    前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...

  8. python代码壁纸-70行python代码实现壁纸批量下载

    前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...

  9. wallpaper代码_70 行 python 代码实现壁纸批量下载!

    好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用于py ...

最新文章

  1. Hosts文件实际应用 配置内部服务器提高访问效率和速度
  2. 机器学习(五) 关于散点图生成
  3. java todo error_java基础-异常
  4. oracle常用的工具软件
  5. STL 源码剖析 空间配置器
  6. 常见音视频格式(转载)
  7. c语言结构体在内存中的存储,C语言结构体在内存中的存储情况探究------内存对齐...
  8. 常见的linux系统故障,linux常见的系统故障排除
  9. shell脚本连接、读写、操作mysql数据库实例
  10. 微信文章互阅python脚本,一天可刷120分
  11. 2021面试题——CSS面试题总结
  12. Java12之switch升级语法在Eclipse中的穿透问题
  13. java判断时间日期是否等于当前日期
  14. 2021.9.15 每日总结
  15. 香港驾驶执照免试换领的官方收取费用是多少?可以在那些国家与地方使用。
  16. 团体程序设计天梯赛——L1-039 古风排版
  17. Java Excel文件内容替换
  18. html 各浏览器兼容性
  19. MATLAB画心形立体图
  20. Linux远程登录xftp,xshell下载以及简单使用教程

热门文章

  1. 设定pic单片机端口为输入_如何设置PIC单片机的端口
  2. Go Slice【Go语言圣经笔记】
  3. 欧盟立法者希望将ICO纳入新的众筹规则
  4. hive知识简单全面详解
  5. 华为要求七千员工先辞职再竞岗 补偿费超10亿_longware_新浪博客
  6. 服务器没有光驱装系统时怎么办,小编教大家没有光驱怎么重装系统
  7. 自动词和他动词的区别
  8. 工业绝缘监测及故障定位解决方案
  9. libm.so与libc.so安装
  10. 2022年华数杯C题插层熔喷完整解题思路(附代码+详细讲解视频)