栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot-Jsoup做java简单-爬虫

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot-Jsoup做java简单-爬虫

使用SpringBoot+Jsoup做java简单’爬虫’
Jsoup简介

Jsoup是一款java的Html解析器,可以直接解析Html。针对网页提供了相关Api,可以通过Dom、Css、Jquery等属性来操作和解析网页。


主要类介绍:
  • Jsoup 类提供了连接,清理和解析HTML文档的方法
  • document 获取HTML文档
  • Element 获取、操作HTML节点
实战(爬京东网页数据) 1.创建Maven项目 2.导入pom依赖

​ 根据自己需求减少或增加依赖


    
    
        org.jsoup
        jsoup
        1.10.2
    
    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
        org.springframework.boot
        spring-boot-starter-test
        test
    

3.编写工具类(方便调用)

我这里写的比较简单,相关复杂设置可以去网上在搜一搜

public class HtmlParseUtil {
    
    public static document getDocment(String keyword,Integer page){
        //拼接好url
        String url = "https://search.jd.com/Search?keyword=" + keyword + "&page=" +page;
        try {
            // jsoup解析url,第二个参数是超时时间
            document document = Jsoup.parse(new URL(url), 9000);
            return document;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
4.相关测试

编写测试类,调用工具类

@SpringBootTest
public class HtmlTest {

    @Test
    public void HtmlParseTest(){
		//使用工具类,这里本质就是在京东搜索keyword=java分页page=1
        document document = HtmlParseUtil.getDocment("java", 1);
		//获取文档中class为gl-warp clearfix的节点集合
        Elements elements = document.getElementsByClass("gl-warp clearfix");
		//拿到上面文档集合中的第一个,并获取到标签名为li的节点集合
        Elements lis = elements.get(0).getElementsByTag("li");
        //循环遍历li的节点集合
        for (int i = 0; i < lis.size(); i++) {
			//拿到节点里的bookname
            Element booknames = lis.get(i).getElementsByClass("p-name").get(0);
            String bookname = booknames.getElementsByTag("em").get(0).text();
            System.out.println(bookname);
			//拿到节点里的img
            Element elementsByClass = lis.get(i).getElementsByClass("p-img").get(0);
            String img = elementsByClass.getElementsByTag("img").get(0).attr("data-lazy-img");
            System.out.println(img);
			//拿到节点里的price
            Element prices = lis.get(i).getElementsByClass("p-price").get(0);
            String price = prices.getElementsByTag("i").get(0).text();
            System.out.println(price);
        }
    }
}

后续可以根据自己需求做不同的逻辑(比如把它封装成一个list,批量添加到es中)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/274110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号