jsoup实现超简单的爬虫

Java爬虫我教你


爬取数据是个很好玩的事情,最近我也是在研究这个东西,然后呢接下来我给大家讲一段小案例,可以满足各位小伙伴的好奇心,藤井就废话不多说,直接上代码

使用工具

maven依赖
(1)lombok
这个依赖是方便我们的爬取数据的对象方便直接进行封装

		<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

(2)jsoup
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

  	 <dependency>
          <groupId>org.jsoup</groupId>
          <artifactId>jsoup</artifactId>
          <version>1.10.2</version>
      </dependency>

使用工具以及框架
工具:IDEA
框架:SpringBoot

项目结构

pojo包
content.java
这个类是存放数据对象的,你需要网站的数据格式肯定是不同的,我们这次爬取网页数据如下,直接上代码:

package com.reptile.uncletj.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
* @Author 藤井大叔
* @Date 2021-01-03 22:26
* @Version SpringBoot 2.2.2
* @projectName   数据对象
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Content {

  /**
   * 数据类型
   */
  private String title;

  /**
   * 价格
   */
  private String price;

  /**
   * 照片路径
   */
  private String img;
}

utils包
工具包主要用于将数据存储在集合中的业务代码,我这边直接在控制台简单展示给大家看一下
HtmlUtils.java

package com.reptile.uncletj.utils;

import com.reptile.uncletj.pojo.Content;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author 藤井大叔
 * @Date 2021-01-03 22:29
 * @Version SpringBoot 2.2.2
 * @projectName
 */
public class HtmlUtils {
    
    public List<Content> parseJD(String keywords) throws Exception {
        String url = "https://search.jd.com/Search?keyword=" + URLDecoder.decode(keywords, "GBK");
        Document document = Jsoup.parse((new URL(url)), 30000);
        Element element = document.getElementById("J_goodsList");
        Elements elements = element.getElementsByTag("li");
        List<Content> list = new ArrayList<Content>();
        for (Element el : elements) {
            String src = el.getElementsByTag("img").eq(0).attr("data-lazy-img");
            String price = el.getElementsByClass("p-price").eq(0).text();
            String name = el.getElementsByClass("p-name").eq(0).text();
            list.add(new Content(name, price,src ));
        }
        return list;
    }
}

测试

我这里写了一个测试类,直接实例化utils类就好了,上代码
Demo.java

package com.reptile.uncletj.main;

import com.reptile.uncletj.utils.HtmlUtils;

/**
 * @Author 藤井大叔
 * @Date 2021-01-03 22:37
 * @Version SpringBoot 2.2.2
 * @projectName
 */
public class Demo  {
    
    public static void main(String[] args) throws Exception {
        HtmlUtils htmlUtils = new HtmlUtils();
        htmlUtils.parseJD("家电").forEach(System.out::println);
    }
}

爬取数据控制台显示
在这里插入图片描述
就是这么简单,数据就到控制台了,下期我来给大家讲解一下怎么把爬取到的数据利用起来,应该用怎么样的方式呢?尽情期待
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

藤井大叔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值