资源简介
java 实现简单爬虫,爬取图片。
根据爬取页面内容,使用jsoup解析html页面,获取需要的路径,进行循环下载。
博客:https://blog.csdn.net/qq_37902949/article/details/81257065

代码片段和文件信息
package com.gx.reptile.util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
/**
*
* @ClassName: ReptileUtil
* @Description: 图片爬虫 -- 使用jsoup解析html页面,获取需要的路径,进行循环下载
* @author zhoujie
* @date 2018年7月27日 下午8:26:01
* @version V1.0
* 百度
*/
public class ReptileUtil {
//定义路径
static String baseurl = “http://www.netbian.com/“;
static String geturl = “http://www.netbian.com/desk/18321.htm“;
static String filepath = “C:\\Users\\zj\\Desktop\\new\\“;
public static void main(String[] args) {
System.out.println(“初始下载页面:“+geturl);
String html = getHtml(geturl); //html页面内容
List srclists = getImgSrcListFromHtml(html); //图片地址集合
downloadImg(srclists filepath); //下载图片
//获取下一个页面进行下载
List list = getNextPageUrl(html);
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
String url = list.get(i);
System.out.println(“下一个下载页面:“+url);
String html2 = getHtml(url); //html页面内容
List srclists2 = getImgSrcListFromHtml(html2); //图片地址集合
downloadImg(srclists2 filepath); //下载图片
}
System.out.println(“下载完毕“);
}
/**
*
* @title: getHtml
* @Description: 获取页面内容
* @param @param url
* @param @return 页面内容
* @return String 返回类型
* @throws
*/
public static String getHtml(String url){
String html = ““;
try {
html = Jsoup.connect(url).execute().body();
} catch (IOException e) {
e.printStackTrace();
}
return html;
}
/**
*
* @title: getImgSrcListFromHtml
* @Description: 获取页面内容图片路径
* @param @param html 页面内容
* @param @return 图片路径数组
* @return ArrayList 返回类型
* @throws
*/
public static List getImgSrcListFromHtml(String html){
List list = new ArrayList<>();
//解析成html页面
Document document = Jsoup.parse(html);
//获取目标
Elements elements = document.select(“div [class=pic]“).select(“img“);
int len = elements.size();
for (int i = 0; i < len; i++) {
list.add(elements.get(i).attr(“src“));
}
return list;
}
/**
*
* @title: getNextPage
* @Description: 从页面内容中获取下一个页面路径
* @param 页面内容
* @return List 返回页面url数组
* @throws
*/
public static List getNextPageUrl(String html){
List list = new ArrayList<>();
//解析成html页面
Document document = Jsoup.parse(html);
//获取目标
Elements elements = document.select(“div [class=list]“).select(“a“);
for (int i = 0;i String url = baseurl + elements.get(i).attr(“href“);
list.add(url);
}
return list;
}
/**
*
* @title: downloadImg
* @Description: 下载图片 -- 通过获取的流转成
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-28 09:05 ReptileDemo\
文件 848 2018-07-27 20:19 ReptileDemo\.classpath
文件 911 2018-07-27 20:19 ReptileDemo\.project
目录 0 2018-07-28 09:05 ReptileDemo\.settings\
文件 564 2018-07-27 20:19 ReptileDemo\.settings\.jsdtscope
文件 364 2018-07-27 20:19 ReptileDemo\.settings\org.eclipse.jdt.core.prefs
文件 492 2018-07-27 20:19 ReptileDemo\.settings\org.eclipse.wst.common.component
文件 345 2018-07-27 20:19 ReptileDemo\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2018-07-27 20:19 ReptileDemo\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2018-07-27 20:19 ReptileDemo\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 0 2018-07-27 20:22 ReptileDemo\readme
目录 0 2018-07-28 09:05 ReptileDemo\src\
目录 0 2018-07-28 09:05 ReptileDemo\src\com\
目录 0 2018-07-28 09:05 ReptileDemo\src\com\gx\
目录 0 2018-07-28 09:05 ReptileDemo\src\com\gx\reptile\
目录 0 2018-07-28 09:05 ReptileDemo\src\com\gx\reptile\util\
文件 5263 2018-07-28 08:46 ReptileDemo\src\com\gx\reptile\util\ReptileUtil.java
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\me
文件 39 2018-07-27 20:19 ReptileDemo\WebRoot\me
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\WEB-INF\
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\WEB-INF\classes\
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\WEB-INF\classes\com\
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\WEB-INF\classes\com\gx\
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\WEB-INF\classes\com\gx\reptile\
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\WEB-INF\classes\com\gx\reptile\util\
文件 5600 2018-07-28 08:46 ReptileDemo\WebRoot\WEB-INF\classes\com\gx\reptile\util\ReptileUtil.class
目录 0 2018-07-28 09:05 ReptileDemo\WebRoot\WEB-INF\lib\
文件 395748 2018-07-27 20:34 ReptileDemo\WebRoot\WEB-INF\lib\jsoup-1.11.3.jar
文件 654 2018-07-27 20:19 ReptileDemo\WebRoot\WEB-INF\web.xm
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论