jsoup实现Java爬虫

jsoup实现Java爬虫

使用的jar包
在这里插入图片描述
简单案例:

package web;

import org.apache.commons.io.IOUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

@WebServlet("/img")
public class WServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //根据网址获取它的网页源代码文档对象
        Document doc = Jsoup.connect("https://XXX").get();
        //从文档doc对象找到所有的图片标签img
        Elements es = doc.select("img[src]");
        //遍历得到每一个图片标签
        for (Element e : es) {
        //得到图片的路径
            String src = e.attr("href");
            //将图片路径给下载和储存的方法
                getImg(src);
          

        }
    }

    private void getImg(String imgPath) {
        try {
        //将图片拿到程序中
            InputStream is = new URL(imgPath).openStream();
//将图片储存在自己的本地文件夹中加上毫秒数命名
            FileOutputStream os = new FileOutputStream("D:\\XXXXX/" + System.currentTimeMillis()+".jpg");
            //io工具类对接两个流
            IOUtils.copy(is,os);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

扩展
当然上面的案例只能访问一些本地的资源,如果要真正的爬到东西还需要绕开反爬机制。

Document doc = Jsoup.connect("http://XXXXXX" ).timeout(5000).data(map).proxy(ip, port).ignoreContentType(true).userAgent(ua[i]).header("referer", "http://XXXXXX/").get();
                //找到标签

大家可以从请求发送的数据入手,例如修改userAgent(ua[i]),或者延迟线程执行时间,更换IP等等
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值