Java爬虫彼岸桌面壁纸(使用httpClient+Jsoup)

import org.apache.commons.io.FileUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.util.Scanner;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;public class Main {static int sum = 0;public static void main(String[] args) throws ClientProtocolException, IOException, InterruptedException {int ch = 0;//初始化int page=1;boolean selectAll=false;//判断用下载全部的真假情况String flage = null;while(true){String[] arry= {"rili","dongman","fengjing","meinv","youxi","yingshi","dongtai","weimei","sheji","keai","qiche","huahui","dongwu","jieri","renwu","meishi","shuiguo","jianzhu","tiyou","junshi","feizhuliu","qita","s/wangzherongyao" ,"s/huyan" ,"s/lol" };System.out.println("彼岸桌面壁纸\n壁纸预览请打开网址http://www.netbian.com/\n壁纸的大小为1920*1080\n请选择你要下载的壁纸类型\t\n1.日历壁纸  2.动漫壁纸  3.风景壁纸  4.美女壁纸  5.游戏"+ "\n6.影视        7.动态  8.唯美壁纸  9.设计  10.可爱壁纸 "+ "\n11.汽车壁纸   12.花卉  13.动物  14.节日  15.人物 \n16.美食     17.水果  18.建筑  19.体育  20.军事 \n21.非主流    22.其它  23.王者荣耀  24.护眼  25.LOL"+ "\n26.下载以上全部类型\n0.退出");Scanner in = new Scanner(System.in);if(selectAll==false) //如果选择下载全部类型为 假ch=in.nextInt();//让用户自己选择下载什么类型if(ch==26) {//如果选择26.下载全部类型selectAll=true;//选择全部为 真ch=0;//并赋值为0;}if(selectAll==true)//选择下载全部类型为 真ch++;//ch自动加1,达到自动下载全部,flage = arry[ch-1];try {downLoadPicture(page, flage);} catch (Exception e) {// TODO: handle exceptionSystem.out.println("感谢你的使用!总共为你下载了" + sum + "张图;目录在C:/爬虫图片/"+flage+"/");System.out.println("下载完毕,返回主菜单!");          in=new Scanner(System.in);}}}public static void downLoadPicture(int page, String flage) throws ClientProtocolException, IOException, InterruptedException {// 创建一个链接CloseableHttpClient httpClient = HttpClients.createDefault();// 利用链接发送请求index_2.htmString adress;if (page == 1)adress = "http://www.netbian.com/"+flage+"/index.htm";elseadress = "http://www.netbian.com/"+flage+"/index_" + page + ".htm";HttpGet httpGet = new HttpGet(adress);// 接收回应CloseableHttpResponse httpResponse = httpClient.execute(httpGet);// 获取响应解析工具httpEntityHttpEntity httpEntity = httpResponse.getEntity();// content响应内容(网页源代码),并解决中文乱码用UTF-8String content = EntityUtils.toString(httpEntity, "UTF-8");// 现在得到了网页源代码,而图片就在源代码中// 拿到了脏数据----要清洗--像洗菜一样---// Jsoup解析器Document document = Jsoup.parse(content);// elements标签下的内容                                             //直接从浏览器复制过来Elements elements = document.select("div.wrap.clearfix #main div.list  ul  li  a ");// 选择,元素,标签int i = 0;                     //如果类名有空格继续用.链接// 进一步清洗for (i = 0; i < 21; i++) {// 观察到一个有略缩图的网页一共有30张Element element = elements.get(i);// 拿到高清图的链接,这个链接在 href 标签里面,attr接收到高清图链接String attr = element.attr("href");if (attr.equals("https://pic.netbian.com/"))continue;// 重复上面的步骤 //创建一个链接CloseableHttpClient httpClient2 = HttpClients.createDefault();// 利用高清图链接发送请求HttpGet httpGet2 = new HttpGet("http://www.netbian.com" + attr + "");// 接收回应CloseableHttpResponse httpResponse2 = httpClient2.execute(httpGet2);// 获取响应解析工具httpEntityHttpEntity httpEntity2 = httpResponse2.getEntity();// content响应内容(网页源代码),并解决中文乱码用UTF-8String content2 = EntityUtils.toString(httpEntity2, "UTF-8");// Jsoup解析器                    再进一步的清洗Document document2 = Jsoup.parse(content2);//直接从浏览器复制过来Elements elements2 = document2.select("div.endpage div.pic p a img");// 选择,元素,标签// System.out.println( elements2);Element element2 = elements2.get(0);// src有图片的地址,得到了高清图片的地址src.....String attr3 = element2.attr("src");// 利用高清图地址发送请求HttpGet httpGet3 = new HttpGet(attr3);// 执行下载该高清原图CloseableHttpResponse httpResponse3 = httpClient.execute(httpGet3);HttpEntity httpEntity3 = httpResponse3.getEntity();//流入本地文件夹InputStream stream = httpEntity3.getContent();FileUtils.copyInputStreamToFile(stream, new File("C://爬虫图片//"+flage+"//" + page + "-" + i + ".png"));sum++;//Thread.sleep(1000);System.out.println("恭喜第" + page + " 页的图片正在下载......总共下载了" + sum + "张图;目录在C:/爬虫图片/"+flage+"/");}page++;//下一页downLoadPicture(page,flage);}
}

运行效果图如下


Java爬虫彼岸桌面壁纸(使用httpClient+Jsoup)相关推荐

  1. Java爬虫系列二:使用HttpClient抓取页面HTML

    爬虫要想爬取需要的信息,首先第一步就要抓取到页面html内容,然后对html进行分析,获取想要的内容.上一篇随笔<Java爬虫系列一:写在开始前>中提到了HttpClient可以抓取页面内 ...

  2. Java爬虫---实战案例(爬取彼岸桌面壁纸)

    目录 步骤一:创建项目 步骤二:网页分析 1.在缩略图页面获取到详情页的超链接 2.在详情页页面获取到图片的下载地址 步骤三:图片下载 翻页功能 源代码 平时玩的爬虫都是用python写的,今天突发奇 ...

  3. java 爬虫 百度新闻_基于HttpClient实现网络爬虫~以百度新闻为例

    在曾经的工作中,实现过简单的网络爬虫,没有系统的介绍过,这篇博客就系统的介绍以下怎样使用java的HttpClient实现网络爬虫. 关于网络爬虫的一些理论知识.实现思想以及策略问题.能够參考百度百科 ...

  4. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

  5. JAVA调用JNA修改桌面壁纸

    一时兴起想用java定时修改桌面,折腾一番,终于成功. 其实无非是java调用jna,实现对dll的调用,控制修改了桌面,纯属娱乐,不喜勿喷. 代码在此: import java.util.Timer ...

  6. 网络爬虫(2)-- Java爬虫框架

    2019独角兽企业重金招聘Python工程师标准>>> Nutch Nutch属于分布式爬虫,爬虫使用分布式,主要是解决两个问题:1)海量URL管理:2)网速.如果要做搜索引擎,Nu ...

  7. java 爬虫框架nutch_网络爬虫(2)-- Java爬虫框架

    Nutch Nutch属于分布式爬虫,爬虫使用分布式,主要是解决两个问题:1)海量URL管理:2)网速.如果要做搜索引擎,Nutch1.x是一个非常好的选择.Nutch1.x和solr或者es配合,就 ...

  8. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  9. 有没有关于python的壁纸_python获取彼岸所有壁纸

    第一部分代码 import requests from bs4 import BeautifulSoup import os import time import random import User ...

  10. Java爬虫学习一一Jsoup爬取彼岸桌面分类下的图片

    最近在找工作,在这个过程中我感到很迷茫,投了很多简历,被查看的却很少,其中也有到现场去面试,结果也很不理想(╥╯^╰╥). 哈哈,跑题了,我在看之前所做的项目时,在我的收藏夹中看到了以前收藏的有关爬虫 ...

最新文章

  1. 树莓派 SyntaxError: invalid syntax(python错误)
  2. 注解处理器开发过程相关问题
  3. Bind和Eval的区别详解
  4. 真正理解 MySQL 的四种隔离级别
  5. JavaScript高级笔记
  6. Activity与Intent
  7. 【转】关于Azure存储账户(2)
  8. LeetCode 829. 连续整数求和(数学)
  9. Kinect v1在windows上的使用教程
  10. php实现弱类型,PHP内核探索:弱类型变量的实现
  11. Linux进程的管理与调度(八) -- Linux下进程的创建过程分析(_do_fork/do_fork详解)
  12. wget 下载需要登录验证的网页文件
  13. 什么是BS,BS和CS的区别有哪些:
  14. Vue中如何解决跨域问题
  15. php strict_types
  16. GCC中-O1 -O2 -O3 优化的原理是什么?
  17. 【Paper】Anomalous Instance Detection in Deep Learning:A Survey
  18. 数据分析师,如何向亲友解释自己的工作
  19. 苹果审核状态为Metadata Rejected下的问题
  20. oracle数据库修改计算机名,oracle 批改计算机名

热门文章

  1. python 吉他_Python中用于比较吉他弦的Matplotlib幅值_频谱单位
  2. mongodb 使用$lookup做多表关联处理
  3. ftp上传工具绿色版,五款ftp上传工具绿色版好用推荐
  4. Costech A17T23SWB MTo
  5. 自动驾驶软件开发人才现状_一文读懂自动驾驶研究现状
  6. ES6转化ES5方法(处理低版本手机白屏等兼容问题)
  7. 国家区块链漏洞库 《区块链漏洞定级细则》发布
  8. C语言 —— 存储类相关的关键字 (持续更新中....)
  9. 计算机组和用户组,计算机管理没有本地用户和组怎么办
  10. CTex winEdit报错“系统找不到指定文件”怎么办