基于Java爬取微博数据(三) 微博主页用户数据

简介: 【5月更文挑战第13天】基于Java爬取微博数据(三) 微博主页用户数据

上一篇文章简单讲述了基于Java爬取微博数据(二),那么这篇将讲述如何基于 Java 爬取微博主页用户数据,下面开始具体的操作。

数据分析

在开始爬取微博主页用户数据之前,我们先对之前基于Java爬取微博数据(一)中的微博主页正文列表数据进行分析,看是否可以从中获取到微博主页用户数据。


首先还是按照基于Java爬取微博数据(一)中的方式获取微博主页正文列表数据内容

image.png

将获取到的数据取出一个微博内容的完整的 Json 对象,保存为 .json 文件

image.png

打开该微博正文内容,可以看到如下微博主页用户数据内容

image.png

但是这里看到,在实际的微博用户主页是还有用户的 粉丝数、关注数、主页描述、全部微博数等内容

image.png

一部分内容是无法从微博正文列表数据内容的 user 属性中获取,但是页面上可以展示,那么猜测这里应该是跳转到微博用户主页之后通过 ajax 异步加载了微博用户相关信息,那么继续查看 【网络】中相关请求,发现了一个获取 微博用户信息的 ajax 请求 /ajax/profile/info?uid=1686546714

image.png

取出请求 /ajax/profile/info?uid=1686546714 浏览器请求中的 响应 内容,可以看到我们需要的微博主页用户信息都有的

image.png

到这里,关于如何获取微博主页用户数据的数据分析就结束了,那么下面我们开始来写代码实现获取对应的微博主页用户数据。

爬取数据

这里我们重新创建一个 main 函数来单独的获取微博主页用户数据, DemoWeiBoInfo.java,整个类的代码比较简单,直接可以获取微博主页用户数据内容,最终执行的结果如图

image.png

DemoWeiBoInfo.java 的源码如下

package com.ruoyi.web.controller.demo.controller;

import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.utils.StringUtils;

import java.text.ParseException;

public class DemoWeiBoInfo
{
    /**
     * 获取微博主页账号信息
     * @param args
     * @throws ParseException
     */
    public static void main(String[] args) throws ParseException {
        // 获取微博账号主页信息
        String url = "https://weibo.com/ajax/profile/info?uid=1686546714";
        String cookie = "你的 Cookie";

        System.out.println("微博账号信息查询开始");

        HttpResponse response = HttpUtil.createGet(url)
                .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36")
                .header("Cookie",cookie)
                .execute();
        String body = response.body();
        //System.out.println(body);
        if (StringUtils.isNotEmpty(body)) {
            JSONObject jsonObject = JSON.parseObject(body);
            //获取数据 data
            JSONObject data = jsonObject.getJSONObject("data");
            // 获取 User 信息
            JSONObject user = data.getJSONObject("user");
            String id = user.getString("id");
            //用户id
            String idstr = user.getString("idstr");
            System.out.println("idstr:" + idstr);
            //用户名
            String screen_name = user.getString("screen_name");
            System.out.println("screen_name:" + screen_name);
            JSONObject status_total_counter = user.getJSONObject("status_total_counter");
            // 转、评、赞 数量
            String total_cnt_format = status_total_counter.getString("total_cnt_format");
            System.out.println("total_cnt_format:" + total_cnt_format);
            String total_cnt = status_total_counter.getString("total_cnt");
            System.out.println("total_cnt:" + total_cnt);
            //评论数量
            String comment_cnt = status_total_counter.getString("comment_cnt");
            System.out.println("comment_cnt:" + comment_cnt);
            // 转发数量
            String repost_cnt = status_total_counter.getString("repost_cnt");
            System.out.println("repost_cnt:" + repost_cnt);
            // 获赞数量
            String like_cnt = status_total_counter.getString("like_cnt");
            System.out.println("like_cnt:" + like_cnt);
            //用户头像
            String avatar_large = user.getString("avatar_large");
            System.out.println("avatar_large:" + avatar_large);
            //描述
            String description = user.getString("description");
            System.out.println("description:" + description);
            // 粉丝数量
            String followers_count = user.getString("followers_count");
            System.out.println("followers_count:" + followers_count);
            String followers_count_str = user.getString("followers_count_str");
            System.out.println("followers_count_str:" + followers_count_str);
            // 关注数量
            String friends_count = user.getString("friends_count");
            System.out.println("friends_count:" + friends_count);
            //微博数量
            String statuses_count = user.getString("statuses_count");
            System.out.println("statuses_count:" + statuses_count);
        }
        System.out.println("微博账号信息查询结束");
    }
}

那么到这里,基于Java 爬取微博用户主页数据的任务就实现了,后续还会继续讲解获取微博正文内容图片、视频等相关内容,敬请关注。

注意点

这里需要说明的是,本文主要是探索基于 Java 爬取微博用户主页数据相关内容实现,大家有需要的可以相互学习一下。但是注意不可用于非法用途,远离“破坏计算机信息系统罪”,慎重!慎重!慎重!


相关文章
|
18天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
34 6
|
16天前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
53 3
|
2天前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
13 2
|
8天前
|
SQL Java OLAP
java实现“数据平滑升级”
java实现“数据平滑升级”
26 2
|
13天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
18天前
|
Java
Java Set以其“不重复”的特性,为我们提供了一个高效、简洁的处理唯一性约束数据的方式。
【10月更文挑战第16天】在Java编程中,Set接口确保集合中没有重复元素,每个元素都是独一无二的。HashSet基于哈希表实现,提供高效的添加、删除和查找操作;TreeSet则基于红黑树实现,不仅去重还能自动排序。通过这两个实现类,我们可以轻松处理需要唯一性约束的数据,提升代码质量和效率。
28 2
|
20天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。
【10月更文挑战第14天】从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。本文深入探讨Set的核心理念,并通过示例代码展示了HashSet和TreeSet的特点和应用场景。
16 2
|
20天前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较
|
9天前
|
SQL Java OLAP
java实现“数据平滑升级”
java实现“数据平滑升级”
7 0
|
18天前
|
缓存 Java 数据处理
java查询大量数据优化
通过结合的高性能云服务,如其提供的弹性计算资源与全球加速网络,可以进一步增强这些优化策略的效果,确保数据处理环节更加迅速、可靠。蓝易云不仅提供稳定的基础架构,还拥有强大的安全防护和灵活的服务选项,是优化大型数据处理项目不可或缺的合作伙伴。
26 0