使用jsoup爬取网页资源(某东为例)

  • Jsoup是一款java版的HTML解析器,可直接解析某个URL地址、HTML文本内容。
  • 解析网页后返回的是一个Document 对象实例,我们可以看到document中有很多类似js的方法 
  • 根据相应的标签找到对象的属性,最后输出我们需要的东西即可。

  • 使用jsoup爬取网页资源(某东为例)_第1张图片

     

第一步加入依赖

        
            org.jsoup
            jsoup
            1.15.1
        

第二步,直接复制粘贴这个工具类即可

public static List getJD(String keyword) throws IOException {
        List jds=new ArrayList<>();
        String url="https://search.jd.com/Search?keyword="+keyword+"&enc=utf-8";

        // 连接网页
        Document document = Jsoup.connect(url).get();
        // 获取id为J_goodsList的元素
        Element element = document.getElementById("J_goodsList");
        if (!ObjectUtils.isEmpty(element)) {
            // 获取li标签所有的元素
            Elements elements = element.getElementsByTag("li");
            // 获取元素中的内容,这里的el就是每个li标签
            for (Element el : elements) {
                String img = el.getElementsByTag("img").eq(0).attr("data-lazy-img");
                String price = el.getElementsByClass("p-price").eq(0).text();
                String title = el.getElementsByClass("p-name").eq(0).text();

                JD jd = new JD();
                jd.setTitle(title);
                jd.setPrice(price);
                jd.setImg(img);

                jds.add(jd);
            }
        }
        return jds;
    }

其中JD是创建的一个实体类,来接收爬取到的资源

@Data
@AllArgsConstructor
@NoArgsConstructor
public class JD {
    private String title;
    private String price;
    private String img;
}

第三步测试

public static void main(String[] args) throws IOException {
        getJD("笔记本电脑").forEach(System.out::println);
    }

结果如下:

 

使用jsoup爬取网页资源(某东为例)_第2张图片

大家想要自定义爬取的内容,可以在工具类中设置参数,更多参数设置可以参考:

jsoup的使用_ThinkStu的博客-CSDN博客_jsoup使用

 

你可能感兴趣的:(Java,java,mybatis,spring)