Springboot-爬虫代码(豆瓣读书)

个人学习需要,自己也不想造大量的数据(太懒~哈哈~),就爬了一下豆瓣读书的数据(感谢豆瓣~)

流程:使用 Java 的 jsoup 对豆瓣读书进行爬虫,保存到本地 mysql 中,再使用 logstash 将 mysql 的数据传输到 elasticsearch

项目源码:https://github.com/Vmetrio/reptile

jsoup官网:https://jsoup.org

豆瓣读书:https://book.douban.com/latest?icn=index-latestbook-all

 

一、创建springboot项目,pom文件引入jsoup的依赖

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

 

二、分析豆瓣读书的html页面,写对应的爬虫代码

核心代码:

    @GetMapping("/reptile")
    public List<Books> Index() throws Exception {
        //获取url请求
        String url = "https://book.douban.com/latest?icn=index-latestbook-all";
        //解析网页,Jsoup返回的是Document对象(浏览器Document对象)
        Document document = Jsoup.parse(new URL(url), 30000);
        //所有在js中使用的方法,这里都能使用
        Element element = document.getElementById("content");
        //在获得网页内容后,获取所有的li标签
        Elements elements = element.getElementsByTag("li");

        ArrayList<Books> booksList = new ArrayList<Books>();

        //获取元素的标签后,再获取标签中的内容
        for (Element el : elements) {
            String bookurl = el.getElementsByClass("cover").attr("href");
            String imgurl = el.getElementsByTag("img").attr("src");
            String bookname = el.getElementsByTag("h2").eq(0).text();
            String author = el.getElementsByClass("color-gray").eq(0).text();
            String detail = el.getElementsByClass("detail").eq(0).text();

            Books books = new Books();
            books.setBookurl(bookurl);
            books.setImgurl(imgurl);
            books.setBookname(bookname);
            books.setAuthor(author);
            books.setDetail(detail);
            booksList.add(books);
        }
        return booksList;
    }

 

三、测试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值