平时玩的爬虫都是用python写的,今天突发奇想的用java写了一个,整个分析的过程和使用python是一样的,都是一样的思路,唯一的区别可能就是语言的不同了,也就是命令和语法。废话不多说,直接进入正题,在此之前还是先贴一下效果图吧。
效果图:
壁纸下载地址:http://www.netbian.com/fengjing/
工具:IDEA
项目创建:Maven
步骤一:创建项目
这一步就不做过多的讲解了,如果有不太了解的地方,可以参考这篇文章:项目管理工具 Maven 的下载,安装,配置以及项目的创建和管理
这里只把项目中的pom.xml配置文件贴一下:
要注意的是配置文件中的依赖
步骤二:网页分析
在这个页面我们只能获取到缩略图片,没办法获取到大图,我们随便点开一个进入详情页
在这个页面我们已经可以获取到大图了
按"F12"打开检查,查看图片路径
打开这个url,我们可以看到这就是我们想要下载的图片
上面就是我们获取到图片的一个流程,那写代码的步骤是什么呢?
1.在缩略图页面获取到详情页的超链接
2.在详情页页面获取到图片的下载地址
1.在缩略图页面获取到详情页的超链接
如果直接获取a标签那肯定有很多是我们不需要的,所以我们用从外到内的方式进行获取,过滤掉其他不需要的a标签
代码部分:
将获取到的所有详情页的url存储到一个列表中,方便我们后续使用
// 获取a标签中的href属性值并将其存储到列表中
public List<String> GetElementUrl(List<String> list){
for(String url: list){
try {
// 需要导入Jsoup包
String html = Jsoup.connect(url).execute().body();
// 解析源代码
Document document = Jsoup.parse(html);
// 获取元素
Elements elements = document.select("div[id=main]").select("div[class=list]").select("ul").select("li").select("a");
// 遍历所有元素
for (int i = 0; i < elements.size(); i++){
// 获取a标签中href属性的值
String aUrl = elements.get(i).attr("href");
// 里面还是有我们不需要的,所以这里还要设置一个条件来进行过滤
if(!aUrl.contains("https:")){
// 将属性值存储到列表中
AUrlList.add(aUrl);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return AUrlList;
}
2.在详情页页面获取到图片的下载地址
这就是图片的下载地址
获取这里的img标签和我们上一步获取a标签是一样的,我们还是采用从外到内的方式获取,以达到过滤的目的
代码部分:
把获取到的img标签中的src属性值存储到列表中,图片名称也存储到列表中
// 获取img标签中的src属性值,并将其存储到列表中
public List<String> GetImageUrl(List<String> list){
for (Object o : list) {
// 将url补充完整
try {
URL aUrl = new URL("http://www.netbian.com" + (String) o);
URLConnection conn = aUrl.openConnection();
InputStream is=conn.getInputStream();
// 获取的源代码乱码,此处解决乱码问题
BufferedReader br = new BufferedReader(new InputStreamReader(is,"gbk"));
String html = null;
String line = null;
while((line = br.readL