Jsoup爬虫小案例
Jsoup爬虫是众多爬虫中的一种,今天分享一个爬取网页中图片的方式,若是通过javascript循环放入图片的话,那就爬取不到了哟!
在代码书写之前,需要做好以下工作准备:
- 创建好一个web工程。
- 配置好服务器。
- 倒入两个包:①
commons-io-2.4.jar
②jsoup-1.8.3.jar
。
这两个包可以在网上直接下载。
接下来就是代码的编写:
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<input type="button" onclick="fun()" value="开始爬图">
</body>
<script>
function fun() {
//location.href='/工程名/Servlet名';
location.href='/as/img';
}
</script>
</html>
ImgServlet.java
@WebServlet("/img")
public class ImgServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 根据网址获取网页源码
Document doc = Jsoup.connect("爬取的网站名").get();
//2. 找到所有图片标签img
Elements es = doc.select("img[src]");
//3. 遍历每一个图片标签
for (Element e : es) {
String src = e.attr("src");
//输出获取的图片名称
System.out.println(src);
getImg(src);
}
}
private void getImg(String src) {
System.out.println(1);
try {
//借助URL -- 将网页上的图片以字节流形式加载到程序中
InputStream is = new URL("爬取的网站名" + src).openStream();
//指定一个图片保存路径 -- 具体文件名
FileOutputStream os = new FileOutputStream("爬取图片后存放的路径" + System.currentTimeMillis() + ".jpg");
//io工具类,对接两个流
IOUtils.copy(is,os);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这样就可以爬取网页中所有的jpg格式的图片啦!