超简单的爬虫我教你,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);
    }
}

爬取数据控制台显示
超简单的爬虫我教你,jsoup一步搞定_第1张图片
就是这么简单,数据就到控制台了,下期我来给大家讲解一下怎么把爬取到的数据利用起来,应该用怎么样的方式呢?尽情期待
超简单的爬虫我教你,jsoup一步搞定_第2张图片

你可能感兴趣的:(超简单的爬虫我教你,jsoup一步搞定)