CSDN低质量分文章自动化获取

1. 背景

最近粉丝终于达到了5K,可是仍然无法通过优质作者申请,原来是平均质量分较低,优化了一些文章后分数提高仍然较慢,所以需要批量获取低质量文章,重点优化

2. 目标效果

在这里插入图片描述

3. 核心代码

其中的Cookie可以根据浏览器最新的覆盖

@Service
public class CsdnScoreServiceImpl implements CsdnScoreService {private final String getArticleUrl = "https://blog.csdn.net/community/home-api/v1/get-business-list";private final String getArticlesScoreUrl = "https://bizapi.csdn.net/trends/api/v1/get-article-score";@Overridepublic List<ArticleDetails> getAllTheArticles(String username, String businessType) {List<ArticleDetails> articleDetails = new ArrayList<>();int index = 0;Map<String, String> headers = new HashMap<>(6);headers.put("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36");headers.put("Host", "blog.csdn.net");headers.put("Cookie", "uuid_tt_dd=10_8463471280-1718794507759-204350; FCNEC=%5B%5B%22AKsRol88-fqTmGBYN7YDi9U4ygbkj1JCa7LGB_Eh5oqBMYbxPawawYP1R9HQMitznfEzHTdvP9Hq03iYunTjc6fz30rEUuagbA7rMA4utrG6MGIAyOONuiP8vf-cK8ohqxRwGbzFu1tQjTY70B_-6QJ_4lXJEycdOA%3D%3D%22%5D%5D; loginbox_strategy=%7B%22taskId%22%3A349%2C%22abCheckTime%22%3A1718794512762%2C%22version%22%3A%22exp11%22%2C%22blog-threeH-dialog-exp11tipShowTimes%22%3A1%2C%22blog-threeH-dialog-exp11%22%3A1718794512763%7D; fpv=9660f121e827956d613e4a2657299e01; UserName=SJshenjian; UserInfo=01a1f47bd59046a493a9edaec4a94fa2; UserToken=01a1f47bd59046a493a9edaec4a94fa2; UserNick=%E6%B2%88%E5%81%A5_%E7%AE%97%E6%B3%95%E5%B0%8F%E7%94%9F; AU=7C8; UN=SJshenjian; BT=1718794604114; p_uid=U010000; management_ques=1718794735632; dc_session_id=10_1719017672988.334311; c_first_ref=cn.bing.com; c_segment=14; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1718794511,1719017674; https_waf_cookie=36c96ef2-eb7d-4e1c43281137a82485add8b511c3873a1823; dc_sid=32f7e92e29922c6bb7f590ee5319d105; creative_btn_mp=3; _clck=1mb890v%7C2%7Cfmu%7C0%7C1631; __gads=ID=97831c72e8a5d544:T=1718794504:RT=1719017718:S=ALNI_Mage4T_L7_PIttVEUlqKDn0abcd5w; __gpi=UID=00000e54e5f01fb5:T=1718794504:RT=1719017718:S=ALNI_MavHywZwa13TawErwQWLQ9HE9HRrg; __eoi=ID=6830a1239ddbaed9:T=1718794504:RT=1719017718:S=AA-AfjZp5nJb-rONHn2kDzA4InqR; yd_captcha_token=ycvu6kdAqCo7T6q8n1U4eqGfUPYDwODSOQZOk3NhHGK92gwCahTTz1bXx3O7an8OGojofgLc9HzheEv565VgOQ%3D%3D; c_first_page=https%3A//blog.csdn.net/wtyuong/article/details/136683702; c_dsid=11_1719018073483.620679; creativeSetApiNew=%7B%22toolbarImg%22%3A%22https%3A//img-home.csdnimg.cn/images/20230921102607.png%22%2C%22publishSuccessImg%22%3A%22https%3A//img-home.csdnimg.cn/images/20240229024608.png%22%2C%22articleNum%22%3A320%2C%22type%22%3A2%2C%22oldUser%22%3Atrue%2C%22useSeven%22%3Afalse%2C%22oldFullVersion%22%3Atrue%2C%22userName%22%3A%22SJshenjian%22%7D; c_pref=https%3A//blog.csdn.net/wtyuong/article/details/136683702; c_ref=https%3A//mp.csdn.net/mp_blog/manage/article%3Fspm%3D1001.2101.3001.5448; c_page_id=default; log_Id_pv=179; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1719018084; log_Id_view=9359; waf_captcha_marker=dc58a87b3ede410a37684476ff6946f2a1c1a6c1a952b5f088d359f3bb04f73b; log_Id_click=214; _clsk=1hosmqe%7C1719018094985%7C4%7C0%7Cx.clarity.ms%2Fcollect; dc_tos=sfgivk");while (true) {index++;String msg = HttpUtil.createGet(getArticleUrl).headerMap(headers, true).body("size=20&page=" + index + "&businessType="+businessType+"&username="+username+"&noMore=false").execute().body();if (ObjectUtil.isEmpty(msg)) {break;}JSONObject data = JSONUtil.parseObj(msg);ArticleResponse articleResponse = JSONUtil.toBean(data, ArticleResponse.class);if (ObjectUtil.isNotEmpty(articleResponse)&& ObjectUtil.isNotEmpty(articleResponse.getData())&& ObjectUtil.isNotEmpty(articleResponse.getData().getList())) {articleDetails.addAll(articleResponse.getData().getList());} else {break;}}return articleDetails;}@Overridepublic Score getArticlesScore(String url) {Map<String, String> headers = new HashMap<>(6);headers.put("X-Ca-Key", "203930474");headers.put("X-Ca-Signature", "+fkC/Z91B8FRai2qZutPI0OyQCX7IsfVFcS7rPZk+YM=");headers.put("X-Ca-Nonce", "86970a2f-f385-4427-a40b-c90cb17c00b9");headers.put("X-Ca-Signature-Headers", "x-ca-key,x-ca-nonce");headers.put("X-Ca-Signed-Content-Type", "multipart/form-data");headers.put("Accept", "application/json, text/plain, */*");String body = HttpUtil.createPost(getArticlesScoreUrl).headerMap(headers, true).body("url=" + url).execute().body();if (ObjectUtil.isNotEmpty(body)) {ScoreResponse scoreResponse = JSONUtil.toBean(body, ScoreResponse.class);if (ObjectUtil.isNotEmpty(scoreResponse)) {return scoreResponse.getData();}}return null;}@Overridepublic void exportExcel(String filePath, List<Map<String, Object>> rows) {// 通过工具类创建writerExcelWriter writer = ExcelUtil.getWriter(filePath);// 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之writer.setOnlyAlias(true);// 合并单元格后的标题行,使用默认标题样式Integer columnTotal = rows.get(0).size() - 1;writer.merge(columnTotal, "CSDN文章质量分");// 一次性写出内容,使用默认样式,强制输出标题writer.write(rows, true);// 设置第一列的自动调整列宽writer.autoSizeColumn(0, true);// 关闭writer,释放内存writer.close();}
}

4. 测试

@SpringBootTest
class CsdnScoreApplicationTests {@Resourceprivate CsdnScoreService scoreService;@Testvoid articleDetailsScore() {List<Map<String, Object>> rows = new ArrayList<>();List<ArticleDetails> allTheArticles = scoreService.getAllTheArticles("SJshenjian", "blog");for (ArticleDetails articleDetails : allTheArticles) {Score articlesScore = scoreService.getArticlesScore(articleDetails.getUrl());System.out.println("-------文章质量分------");System.out.println("文章名称:" + articleDetails.getTitle());System.out.println("文章分数:" + articlesScore.getScore());System.out.println("文章建议:" + articlesScore.getMessage());System.out.println("-------   结束  ------");Map<String, Object> row = new HashMap<>();row.put("文章名称", articleDetails.getTitle());row.put("文章阅读数", articleDetails.getViewCount());row.put("文章分数", articlesScore.getScore());row.put("文章建议", articlesScore.getMessage());rows.add(row);}String absolutePath =  "/home/shenjian/数据/CSDN文章分数" + DateUtil.currentSeconds() + ".xlsx";scoreService.exportExcel(absolutePath, rows);}
}

5. 源码地址

https://github.com/SJshenjian/csdn-core

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BFS【2】迷宫

目录 迷宫 走到右下角最短路径长度 走到右下角最短路径 跨步迷宫 迷宫 走到右下角最短路径长度 我是和上一篇一样&#xff0c;创建一个队列&#xff0c;不过while 里面判责是queue非空&#xff0c;否则会死循环万一是死路的话。 也是要判断不要重复入队。 #include <…

车联网文章合集

文章来源如下&#xff1a; 汽车ECU介绍浅谈域控制器整车5大域控制器智能座舱域控制器车身域控制器汽车T-BOX介绍

使用java +paho mqtt编写模拟发布温度及订阅的过程

启动mqtt 服务 创建项目&#xff0c;在项目中添加模块 添加文件夹 添加maven依赖 <dependencies><dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.0<…

夏至的中医理论,提供相关的养生建议。包括饮食、运动、作息等方面的建议。

夏至中医养生建议 夏至&#xff0c;作为夏季的一个重要节气&#xff0c;标志着炎热季节的正式开始。在中医理论中&#xff0c;夏至被视为阳气最旺盛的时期&#xff0c;因此&#xff0c;养生之道需顺应夏季阳盛阴衰的特点&#xff0c;以保护阳气、调整阴阳平衡为核心。以下从饮…

vue3使用富文本

1、下载 pnpm install wangeditor/editor wangeditor/editor-for-vue 2、引入和使用 <Toolbar style"border-bottom: 1px solid #ccc" :editor"editorRef" :defaultConfig"toolbarConfig" mode"default" /><Editorstyle&q…

如何下载和安装SQLynx数据库管理工具? (MySQL作为测试数据库)

目录 1. 官网下载 2. 安装软件 3. 启动SQLynx软件 4. 开始使用 5. 执行第一条SQL语句 6. 总结 SQLynx是一款先进的Web SQL集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为数据库管理、查询和数据分析设计。作为一个基于浏览器的工具&#xff08;同时也支持桌面…

ruby中语法知识

return home 参考链接 理解Ruby中的作用域Ruby 中的类与对象Ruby学习之元编程  Kernel#evel(), Object#instance_evel()、Module#class_evel() 知识点 ruby中include和extend以及模块中ClassMethods Ruby require,load,include,extend的显著区别 Ruby中的 Object、Class、…

二分查找与移除元素有序数组的平方、 长度最小的子数组、螺旋矩阵II

数组 704. 二分查找 704. 二分查找 - 力扣 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 class Solution { public:…

Spring Cloud Hystrix快速入门demo

1.什么是Spring Cloud Hystrix&#xff1f; Spring Cloud Hystrix 是一个用于处理分布式系统中故障的库。它实现了熔断器模式&#xff0c;可以防止由于故障服务的连锁反应而导致整个系统崩溃。Spring Cloud Hystrix 提供了丰富的功能&#xff0c;如熔断、降级、限流、缓存等&a…

Python xlwt库:写excel表格

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

基于java+springboot+vue实现的电商应用系统(文末源码+Lw)241

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电商应用系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

当flex-direction: column时,设置flex:1不生效解决办法

当需求是: 页面纵向排列,且最后一个元素撑满剩余高度 flex:1在横向排列时是可以的,但是纵向排列会失效,此时需要给最后一个子元素设置align-self: stretch;即可撑满剩余高度 <div class"father"><div class"child child1"></div><div…

Python抓取高考网图片

Python抓取高考网图片 一、项目介绍二、完整代码一、项目介绍 本次采集的目标是高考网(http://www.gaokao.com/gkpic/)的图片,实现图片自动下载。高考网主页如下图: 爬取的流程包括寻找数据接口,发送请求,解析图片链接,向图片链接发送请求获取数据,最后保存数据。 二…

C++设计模式——Composite组合模式

一&#xff0c;组合模式简介 真实世界中&#xff0c;像企业组织、文档、图形软件界面等案例&#xff0c;它们在结构上都是分层次的。将系统分层次的方式使得统一管理和添加不同子模块变得容易&#xff0c;在软件开发中&#xff0c;组合模式的设计思想和它们类似。 组合模式是…

DDP(Differential Dynamic Programming)算法举例

DDP(Differential Dynamic Programming)算法 基本原理 DDP(Differential Dynamic Programming)是一种用于求解非线性最优控制问题的递归算法。它基于动态规划的思想,通过线性化系统的动力学方程和二次近似代价函数,递归地优化控制策略。DDP的核心在于利用局部二次近似来…

(vue3)引入组件标红,...has no default export 组件没有默认导出

(vue3)引入组件标红&#xff0c;…has no default export 组件没有默认导出 一、项目背景&#xff1a; 创建的vitevue3ts项目页面有标红,但程序不报错 二、原因 由于之前安装了 Vetur 插件&#xff0c;Vetur 默认使用 eslint-plugin-vue&#xff0c;并且强制 export default …

linux升级openssh

在日常开发中&#xff0c;经常会需要升级服务器漏洞&#xff0c;记录一下linux升级openssh相关&#xff0c;服务器版本为centos7.8&#xff0c;升级有两种方案&#xff0c;一种是可以上互联网环境&#xff0c;一种是内网环境&#xff0c;我这边因为是内网环境&#xff0c;只能进…

MySQL中CASE WHEN用法总结

MySQL中CASE WHEN用法总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在MySQL中&#xff0c;CASE WHEN语句是一种条件表达式&#xff0c;用于在查询中进行…

【AI应用探讨】—多模态应用场景

目录 1. 自动驾驶技术 多模态传感器融合 技术突破 2. 智能家居领域 多模态交互方式 应用实例 3. 智能客服领域 智能问答与情感分析 提升服务效率 4. 跨模态生成与理解 文字生成图像/视频 图像/视频生成文本 5. 未来发展趋势 多模态解析与生成 价值对齐与伦理考虑…

数据结构——优先级队列(堆)Priority Queue详解

1. 优先级队列 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该场景下&#xff0c;使用队列不合适 在这种情况下&#xff0c;数据结构应…