package com.obcy.service;
import com.obcy.util.DownLoad;
import com.obcy.util.GetHTML;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class BiAn {
//获取到所有的一级页面,从第2页到第946页
public ArrayList<String> getTopUrl(){
//String topurl = "http://www.netbian.com/hd3840x2160/index_2.htm"
//定义一个集合保存所有的一级页面
ArrayList<String> list = new ArrayList<String>();
for (int i = 2; i <= 946; i++) {
list.add("http://www.netbian.com/hd3840x2160/index_"+i+".htm");
}
return list;
}
//获取一级页面的所有图片查看地址
//传入的参数是一级页面地址
public HashMap<String,String> getGpjView(String topUrl){
String url = topUrl;
String html = GetHTML.getHTML(url);
//获取到网页源代码document对象
Document document = Jsoup.parse(html);
//解析document对象,拿到页面每个图片查看地址
Elements list = document.getElementsByClass("list");
//拿到的list只有一个对象,这个对象里包含页面所有的图片a标签
Elements a = null;
try {
a = list.get(0).select("ul>li>a");
} catch (Exception e) {
System.out.println("没有获取到a标签");
}
//遍历a标签对象,拿到a标签的href属性值并拼接成完整的图片查看地址放入集合里
//建立一个map集合
HashMap<String,String> map = new HashMap<String, String>();
for (int i = 0; i < a.size(); i++) {
String href = "http://www.netbian.com"+a.get(i).attr("href");
String name = a.get(i).attr("title");
//System.out.println(href);http://www.netbian.com/desk/22138.htm
map.put(name,href);
}
//搜集本页面的图片查看地址完成
return map;
}
//访问每个一级页面,获取到页面里所有的图片下载地址,
// 方法接收一个装有一个一级页面所有图片查看地址的集合
public void getDownload(HashMap<String,String> map){
//遍历集合,对集合里所有的页面进行提取,每个页面提取到一张图片下载地址,并下载
for (Map.Entry<String, String> entry : map.entrySet()) {
String html = GetHTML.getHTML(entry.getValue());
Document document = Jsoup.parse(html);
//拿到图片img标签对象,只有一个
Elements endpage = null;
try {
endpage = document.getElementsByClass("endpage").get(0).select("div>p>a>img");
} catch (Exception e) {
System.out.println("没获取到页面对象,继续下一个");
continue;
}
//System.out.println(endpage.get(0).attr("src"));
//得到下载地址
String target = endpage.get(0).attr("src");
String path = "F:/BiAn/"+entry.getKey()+".jpg";
//开始下载
DownLoad.downLoad(target,path);
}
}
@Test
public void test(){
//判断是否存在文件夹F:/BiAn
File file = new File("F:/BiAn");
if (!file.exists()){
file.mkdirs();
System.out.println("已创建下载文件夹F:/BiAn");
}else {
System.out.println("已存在文件夹,具备下载条件");
}
//单线程
//拿到所有一级页面
ArrayList<String> topUrl = getTopUrl();
//对每个页面进行操作,1.得到视图集合,2.遍历集合,拿到下载地址,3.下载
for (String url : topUrl) {
HashMap<String, String> gpjView = getGpjView(url);
getDownload(gpjView);
}
}
}