[Kotlin]用fold&mapTo&Jsoup爬取新闻

本文介绍如何利用Kotlin的fold和mapTo方法结合Jsoup库,爬取指定网页财经要闻的新闻标题、URL和时间。首先定位到包含新闻数据的HTML类,然后遍历li元素,将每个li转换为Map并存入List,最终得到包含所有新闻信息的Map列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、需求:爬取http://caijing.bandao.cn/list.asp?cate=YW&page=1财经要闻栏目下的新闻标题、url、时间。


2、实现

 
 
 
Jsoup.connect("http://caijing.bandao.cn/list.asp?cate=YW&page=1")
        .timeout(5000)
        .get()
        .getElementsByClass("centerAllList")
        .fold(ArrayList<Map<String,String>>()){
            acc, elements ->
            elements.getElementsByTag("li")
                    .mapTo(acc){
                        mapOf(
                                "text" to it.getElementsByTag("a").html(),
                                "href" to it.getElementsByTag("a").attr("href"),
                                "date" to it.getElementsByClass("date").html()
                        )
                    }
        }.forEach(::println)

3、分析

1)首先获取页面上的centerAllList类,新闻数据都在这里面

2)在centerAllList类下,一对li标签代表一条新闻信息

3)我们看到,acc和elements参数被传进函数中,其中acc表示最后要返回的那个总的List;而elements表示centerAllList的List。我们把此List遍历,每一个子元素都代表一个centerAllList。接着我们获取centerAllList下所有的li,这样我们就能得到由li组成的List。

4)现在我们已经获取到所有的li了,接下来我们把li转为Map,一个Map代表一条新闻,所以我们最后需要的对象是由Map组成的List。其中acc代表最后要返回的List,而it代表每一个li。我们用mapTo把li转为Map,并将其存入到acc中,此时我们就得到了由Map组成的List了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值