JAVA爬虫之京东

Jsoup网络爬虫案例(爬取京东商品数据)

一. 依赖安装

更多版本可以去Maven仓库查看,这里使用较新的1.15.3版本

 <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.15.3</version>
        </dependency>

二. 进入京东官网,查看分析前端对象数据

在这里插入图片描述

打开F12,使用前端选择按钮
在这里插入图片描述

选择指定图片位置,进行获取,发现id为 J_goodsList 的div标签下的li标签,每个li标签对应一条商品数据,
在这里插入图片描述

三. 写代码,开始爬虫

import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.SimpleTimeZone;

public class Jsoup {
    static int i = 0;

    public static void main(String[] args) {
        //输入搜索内容
        Scanner sc = new Scanner(System.in);
        String item = sc.next();
        //拼接搜索路径
        String url = "https://search.jd.com/Search?keyword=" + item;

        //设置空参
        Document document = null;
        Element element = null;
        Elements elementsByClass = null;
        Elements li = null;
        InputStream is=null;
        FileOutputStream os =null;

        try {
            //获取doc对象
            document = org.jsoup.Jsoup.connect(url).get();
            //根据id和标签获取内容
            element=document.getElementById("J_goodsList");
            elementsByClass = element.getElementsByClass("gl-warp clearfix");
            li = element.getElementsByTag("li");
            URLConnection con = null;

            //遍历开始下载
            for (Element ei : li) {
                i++;
                //获取图片路径
                String img = ei.getElementsByTag("img").eq(0).attr("data-lazy-img");
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
                //设置文件名
                String text = item + dateFormat.format(new Date()) + "第" + i + "张图片".replaceAll(" ", "");
                //设置图片下载路径
                URL picture = new URL("https:" + img);
                con = picture.openConnection();
                // 输入流
                 is = con.getInputStream();

                // 1K的数据缓冲
                byte[] bs = new byte[1024];

                // 读取到的数据长度
                int len;

                //下载路径及下载图片名称
                String filename = "D:\\图片下载/    " + text + ".jpg";
                File file = new File(filename);

                // 输出的文件流
                 os = new FileOutputStream(file, true);

                // 开始读取
                while ((len = is.read(bs)) != -1) {
                    os.write(bs, 0, len);
                }
                System.out.println("正在下载--->" + picture);
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }finally {
            try {
                //关闭资源
                if(os!=null)  os.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            try {
                //关闭资源
                if(is!=null)   is.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

执行过程如下:
在这里插入图片描述

数据爬取成功!在这里插入图片描述
最后,关于Jsoup的一些其他API或者方法,可以去查看官方文档,也可以去查看这位博主的一篇博客,个人觉得挺不错的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混元光盾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值