当前位置: 首页 > news >正文

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

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

  • 数据分析
  • 爬取数据
  • 注意点

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

数据分析

在开始爬取微博主页用户数据之前,我们先对之前基于Java爬取微博数据(一)中的微博主页正文列表数据进行分析,看是否可以从中获取到微博主页用户数据。
首先还是按照基于Java爬取微博数据(一)中的方式获取微博主页正文列表数据内容
在这里插入图片描述
将获取到的数据取出一个微博内容的完整的 Json 对象,保存为 .json 文件
在这里插入图片描述
打开该微博正文内容,可以看到如下微博主页用户数据内容
在这里插入图片描述
但是这里看到,在实际的微博用户主页是还有用户的 粉丝数、关注数、主页描述、全部微博数等内容
在这里插入图片描述
一部分内容是无法从微博正文列表数据内容的 user 属性中获取,但是页面上可以展示,那么猜测这里应该是跳转到微博用户主页之后通过 ajax 异步加载了微博用户相关信息,那么继续查看 【网络】中相关请求,发现了一个获取 微博用户信息的 ajax 请求 /ajax/profile/info?uid=1686546714
在这里插入图片描述
取出请求 /ajax/profile/info?uid=1686546714 浏览器请求中的 响应 内容,可以看到我们需要的微博主页用户信息都有的
在这里插入图片描述
到这里,关于如何获取微博主页用户数据的数据分析就结束了,那么下面我们开始来写代码实现获取对应的微博主页用户数据。

爬取数据

这里我们重新创建一个 main 函数来单独的获取微博主页用户数据, DemoWeiBoInfo.java,整个类的代码比较简单,直接可以获取微博主页用户数据内容,最终执行的结果如图
在这里插入图片描述
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);//获取数据 dataJSONObject data = jsonObject.getJSONObject("data");// 获取 User 信息JSONObject user = data.getJSONObject("user");String id = user.getString("id");//用户idString 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 爬取微博用户主页数据相关内容实现,大家有需要的可以相互学习一下。但是注意不可用于非法用途,远离“破坏计算机信息系统罪”,慎重!慎重!慎重!

http://www.lryc.cn/news/428180.html

相关文章:

  • Openstack 与 Ceph集群搭建(中): Ceph部署
  • 上市公司上下游、客户数据匹配数据集(2001-2023年)
  • Promise 对象
  • 扫码头测试检测适配步骤
  • 解决k8s分布式集群,子节点加入到主节点失败的问题
  • 什么是XSS跨站攻击?如何防护?
  • 谷粒商城实战笔记-问题记录-首页没有显示用户名-跨域session问题
  • 【面试宝典】redis常见面试题总结(上)
  • 数据仓库: 3- ETL过程
  • js数组变字符串
  • 日常问题笔记1
  • 位图与布隆过滤器 —— 海量数据处理
  • 二:《Python基础语法汇总》— 条件判断与循环结构
  • 【威锋网-注册安全分析报告-无验证方式导致安全隐患】
  • 01_React简介、基础入门
  • 【Java 内存区域】
  • 你是如何克服编程学习中的挫折感的?
  • 【AI应用实战】灵办AI插件集成详细指南
  • MySQL数据库连接超时问题排查报告
  • 代码随想录第三天 | 链表
  • Python编码系列—Python数据可视化:Matplotlib与Seaborn的实战应用
  • putty中修改默认窗口大小和字体、字号
  • Windows下网络编与ESP8266-WiFi通信(win32-API)
  • 【Golang】golang安装一些依赖包时总是失败
  • ubuntu如何监控Xvfb虚拟显示器
  • 小型需求管理软件盘点:8款功能强大的工具
  • Labelme的安装与使用教程
  • C#基础:数据库中使用Linq作分组处理(反射/直接分组)
  • Revite二次开发_使用WPF和WebView2制作一个访问网站的窗口
  • Java Spring Boot 连接数据库