Java爬虫彼岸桌面壁纸(使用httpClient+Jsoup)
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)相关推荐
- Java爬虫系列二:使用HttpClient抓取页面HTML
爬虫要想爬取需要的信息,首先第一步就要抓取到页面html内容,然后对html进行分析,获取想要的内容.上一篇随笔<Java爬虫系列一:写在开始前>中提到了HttpClient可以抓取页面内 ...
- Java爬虫---实战案例(爬取彼岸桌面壁纸)
目录 步骤一:创建项目 步骤二:网页分析 1.在缩略图页面获取到详情页的超链接 2.在详情页页面获取到图片的下载地址 步骤三:图片下载 翻页功能 源代码 平时玩的爬虫都是用python写的,今天突发奇 ...
- java 爬虫 百度新闻_基于HttpClient实现网络爬虫~以百度新闻为例
在曾经的工作中,实现过简单的网络爬虫,没有系统的介绍过,这篇博客就系统的介绍以下怎样使用java的HttpClient实现网络爬虫. 关于网络爬虫的一些理论知识.实现思想以及策略问题.能够參考百度百科 ...
- Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析
博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...
- JAVA调用JNA修改桌面壁纸
一时兴起想用java定时修改桌面,折腾一番,终于成功. 其实无非是java调用jna,实现对dll的调用,控制修改了桌面,纯属娱乐,不喜勿喷. 代码在此: import java.util.Timer ...
- 网络爬虫(2)-- Java爬虫框架
2019独角兽企业重金招聘Python工程师标准>>> Nutch Nutch属于分布式爬虫,爬虫使用分布式,主要是解决两个问题:1)海量URL管理:2)网速.如果要做搜索引擎,Nu ...
- java 爬虫框架nutch_网络爬虫(2)-- Java爬虫框架
Nutch Nutch属于分布式爬虫,爬虫使用分布式,主要是解决两个问题:1)海量URL管理:2)网速.如果要做搜索引擎,Nutch1.x是一个非常好的选择.Nutch1.x和solr或者es配合,就 ...
- Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)
在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...
- 有没有关于python的壁纸_python获取彼岸所有壁纸
第一部分代码 import requests from bs4 import BeautifulSoup import os import time import random import User ...
- Java爬虫学习一一Jsoup爬取彼岸桌面分类下的图片
最近在找工作,在这个过程中我感到很迷茫,投了很多简历,被查看的却很少,其中也有到现场去面试,结果也很不理想(╥╯^╰╥). 哈哈,跑题了,我在看之前所做的项目时,在我的收藏夹中看到了以前收藏的有关爬虫 ...
最新文章
- 树莓派 SyntaxError: invalid syntax(python错误)
- 注解处理器开发过程相关问题
- Bind和Eval的区别详解
- 真正理解 MySQL 的四种隔离级别
- JavaScript高级笔记
- Activity与Intent
- 【转】关于Azure存储账户(2)
- LeetCode 829. 连续整数求和(数学)
- Kinect v1在windows上的使用教程
- php实现弱类型,PHP内核探索:弱类型变量的实现
- Linux进程的管理与调度(八) -- Linux下进程的创建过程分析(_do_fork/do_fork详解)
- wget 下载需要登录验证的网页文件
- 什么是BS,BS和CS的区别有哪些:
- Vue中如何解决跨域问题
- php strict_types
- GCC中-O1 -O2 -O3 优化的原理是什么?
- 【Paper】Anomalous Instance Detection in Deep Learning:A Survey
- 数据分析师,如何向亲友解释自己的工作
- 苹果审核状态为Metadata Rejected下的问题
- oracle数据库修改计算机名,oracle 批改计算机名
热门文章
- python 吉他_Python中用于比较吉他弦的Matplotlib幅值_频谱单位
- mongodb 使用$lookup做多表关联处理
- ftp上传工具绿色版,五款ftp上传工具绿色版好用推荐
- Costech A17T23SWB MTo
- 自动驾驶软件开发人才现状_一文读懂自动驾驶研究现状
- ES6转化ES5方法(处理低版本手机白屏等兼容问题)
- 国家区块链漏洞库 《区块链漏洞定级细则》发布
- C语言 —— 存储类相关的关键字 (持续更新中....)
- 计算机组和用户组,计算机管理没有本地用户和组怎么办
- CTex winEdit报错“系统找不到指定文件”怎么办