java 必应壁纸批量下载
必应的壁纸一个一个下有点麻烦,写个小爬虫批量下载,代码如下:
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 必应壁纸批量下载相关推荐
- 【java】 文件批量下载并压缩为zip压缩包
[java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...
- Python实现壁纸批量下载
Python实现壁纸批量下载 最近想要一些新的壁纸,但是从网站上面找一张一张下载太慢了,所以写了个爬虫批量下载壁纸. 先看看实现的效果 需要的包: requests.bs4 .os.re 源码: # ...
- Python爬虫 - wallhaven任意页面下的壁纸批量下载
基于Python 任意页面下的壁纸批量下载 github Maxpagenum 爬取页数 fpath 保存路径 url 基础地址 import requests import re import ti ...
- 使用python实现高清壁纸批量下载
一.高清壁纸批量下载 1.概述 此代码是使用python多线程批量下载高清壁纸的一个小脚本,代码略为简陋. 此代码仅供学习与交流,请不要用于违法用途. import requests from lxm ...
- java 解析m3u8的实例_使用java线程池批量下载m3u8。合并mp4.
使用java线程池批量下载m3u8合并mp4. 看了线程池的demo,然后就想下载文件试试. 代码未必规范,多多建议. 大家可以自行修改,满足自己的需求. 还需要深入学习一下线程池. 给俺个星星⭐,可 ...
- 必应每日壁纸批量下载
背景 桌面壁纸好久没有更新,感到有些审美疲劳.必应每日推荐高质量壁纸,有好心人已经做成了专门的必应壁纸站,更新桌面壁纸,顺便练手爬虫小程序. 分析 第一步提取出全部图片的链接,单个页面正则提取后,加个 ...
- python代码壁纸-python实现壁纸批量下载代码实例
前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...
- python代码壁纸-70行python代码实现壁纸批量下载
前言 好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用 ...
- wallpaper代码_70 行 python 代码实现壁纸批量下载!
好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python.这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸. 注意:本文所属项目仅用于py ...
最新文章
- Hosts文件实际应用 配置内部服务器提高访问效率和速度
- 机器学习(五) 关于散点图生成
- java todo error_java基础-异常
- oracle常用的工具软件
- STL 源码剖析 空间配置器
- 常见音视频格式(转载)
- c语言结构体在内存中的存储,C语言结构体在内存中的存储情况探究------内存对齐...
- 常见的linux系统故障,linux常见的系统故障排除
- shell脚本连接、读写、操作mysql数据库实例
- 微信文章互阅python脚本,一天可刷120分
- 2021面试题——CSS面试题总结
- Java12之switch升级语法在Eclipse中的穿透问题
- java判断时间日期是否等于当前日期
- 2021.9.15 每日总结
- 香港驾驶执照免试换领的官方收取费用是多少?可以在那些国家与地方使用。
- 团体程序设计天梯赛——L1-039 古风排版
- Java Excel文件内容替换
- html 各浏览器兼容性
- MATLAB画心形立体图
- Linux远程登录xftp,xshell下载以及简单使用教程