Spring MVC:如何将每三十分钟刷新的爬网数据保存在数据库中?

问题描述 投票:0回答:1

我是Web开发人员的新手,我真的很想听听您关于如何构建项目的建议。

某些背景:我正在开发一个网站,每三十分钟从另一个网站抓取20篇最受欢迎的新闻文章,并将其显示在新闻文章列表中。就像任何报纸网站一样,用户应该可以通过单击标题来访问文章,但他/她还应该可以对文章内容进行更改。如果一天之内未做任何更改,则应将原始文章保存在数据库中。

我的问题:如何将搜寻器放置在哪里以及如何将其与其他弹簧组件(例如DAO,控制器和查看文件)连接?它是批处理作业吗?由于我每隔30分钟刷新一次抓取工具,因此每次抓取工具运行时都必须截断该表吗?

spring spring-mvc web-scraping web-crawler data-modeling
1个回答
0
投票

由于只需要几秒钟并且不会被频繁调用,因此最好只使用预定的Spring服务。

使用@Scheduled创建Cron作业,如下所示:

@Service
public class CrawlingService {
...

    @Scheduled(cron = */30 * * * *)
    public void crawl() {
        List<> websites = getWebsites(); // properties file, DB...
        websites.stream().forEach(w => {
            CrawlData data = crawl(w);
            db.save(data);
        });
    }

}

控制器仅用于从数据库中获取数据,这与实际的搜寻器无关。对于视图,我建议使用React,Vue ...,因此请勿使用Spring或JSP。

© www.soinside.com 2019 - 2024. All rights reserved.