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

news2024/11/25 20:46:40

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";

    @Override
    public 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;
    }

    @Override
    public 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;
    }

    @Override
    public void exportExcel(String filePath, List<Map<String, Object>> rows) {
        // 通过工具类创建writer
        ExcelWriter 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 {
    @Resource
    private CsdnScoreService scoreService;

    @Test
    void 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.coloradmin.cn/o/1849339.html

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

相关文章

Ubuntu系统通过GRUB引导菜单进入恢复模式修改账户密码

当在Ubuntu系统中忘记了账户密码时&#xff0c;有几种方法可以破解或重置密码。 本指引文档方法&#xff1a;通过GRUB引导菜单进入恢复模式 实践环境为&#xff1a;20.04.6 LTS (Focal Fossa) 1. 重启Ubuntu系统&#xff1a;首先&#xff0c;你需要重启你的Ubuntu系统。 2. …

【PyTorch】【机器学习】图片张量、通道分解合成和裁剪

一、导入所需库 from PIL import Image import torch import numpy as np import matplotlib.pyplot as plt二、读取图片 pic np.array(Image.open(venice-boat.jpg))上述代码解释&#xff1a;先用Image.open()方法读取jpg格式图片&#xff0c;再用np.array()方法将图片转成…

图解Transformer

图解Transformer Transformer模型是在论文《Attention is All You Need》中提出的。它的TensorFlow实现作为Tensor2Tensor包的一部分是可用的。哈佛大学的自然语言处理小组创建了一个指南&#xff0c;用PyTorch实现对论文进行了注释。在这篇文章中&#xff0c;我们将尝试简化一…

基于CST的连续域束缚态(BIC)设计与机制研究

关键词&#xff1a;太赫兹&#xff0c;超表面&#xff0c;连续域束缚态&#xff0c;CST&#xff0c;高Q 束缚态的概念最先出现于量子力学中&#xff0c;当粒子被势场约束在特定的区域内运动&#xff0c;即在无限远处波函数等于零的态叫束缚态&#xff0c;例如势阱中的粒子就处…

MySQL操作语句练习【经典20题】

emp 表视图 dept 表视图 题目 1.请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。 2.请在EMP表中查找部门号在10&#xff0d;30之间的雇员的姓名、部门号、工资、工作。 3.请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。 4.请从表EMP中查找工资低…

EM算法数学推导

EM算法可以看李航老师的《机器学习方法》、机器学习白板推导、EM算法及其推广进行学习。下文的数学推导出自“南瓜书”&#xff0c;记录在此只为方便查阅。

qt 简单实验 读取json格式的配置文件

1.概要 2.代码 //#include "mainwindow.h"#include <QApplication> #include <QFile> #include <QJsonDocument> #include <QJsonObject> #include <QDebug> //读取json数据的配置文件QJsonObject readJsonConfigFile(const QString …

python-邮票组合问题

[题目描述] 某人有四张3分的邮票和三张5分的邮票&#xff0c;用这些邮票中的一张或若干张可以得到多少种不同的邮资&#xff1f;输入格式&#xff1a; 此题无输入。输出格式&#xff1a; 输出可以得到不同邮资的数量。 样例输入 无样例输出 19数据范围&#xff1a; 对于100%的…

Stable Diffusion 3 文本生成图像 在线体验 原理分析

前言 本文分享使用Stable Diffusion 3实现文本生成图像&#xff0c;可以通过在线网页中免费使用的&#xff0c;也有API等方式访问。 同时结合论文和开源代码进行分析&#xff0c;理解其原理。 Stable Diffusion 3是Stability AI开发的最新、最先进的文本生成图像模型&#x…

Linux常用命令(16)—awk命令(有相关截图)

写在前面&#xff1a; 最近在学习Linux命令&#xff0c;记录一下学习Linux常用命令的过程&#xff0c;方便以后复习。仅供参考&#xff0c;若有不当的地方&#xff0c;恳请指正。如果对你有帮助&#xff0c;欢迎点赞&#xff0c;关注&#xff0c;收藏&#xff0c;评论&#xf…

秋招突击——6/21——新作{两两交换链表中的节点,K个一组反转链表}

文章目录 引言新做删除有序数组中的重复项个人实现 K 个一组翻转链表个人实现参考代码 总结 引言 上午完全去听讲座了&#xff0c;听了三场&#xff0c;拿了三个讲座单&#xff0c;从九点一直到十二点。笔记本电脑插电才能用&#xff0c;就没带&#xff0c;所以没有进行复习。…

GIT回滚

1. 使用 git revert git revert 命令会创建一个新的提交&#xff0c;这个提交会撤销指定提交的更改。这通常用于公共分支&#xff08;如 main 或 master&#xff09;&#xff0c;因为它不会重写历史。 git revert HEAD # 撤销最近的提交 # 或者指定一个特定的提交哈希值 …

一句话、10秒,我用Claude 3.5 Sonnet生成了完整的俄罗斯方块!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

大模型项目落地时,该如何估算模型所需GPU算力资源

近期公司有大模型项目落地。在前期沟通时,对于算力估算和采购方案许多小伙伴不太了解,在此对相关的算力估算和选择进行一些总结。 不喜欢过程的可以直接 跳到HF上提供的模型计算器 要估算大模型的所需的显卡算力,首先要了解大模型的参数基础知识。 大模型的规模、参数的理解…

没等来百度惊艳的All in AI,却等来了国产之光的盘古大模型 5.0

6月21日&#xff0c;华为开发者大会&#xff08;HDC 2024&#xff09;在广东东莞正式开幕。盘古大模型5.0的更新&#xff0c;也是此次HDC2024的另一项重头戏。在过去的一年中&#xff0c;盘古大模型正在疯狂向各行各业渗透。 此次&#xff0c;华为方面展示了他们在具身智能、医…

细说MCU输出两路PWM波形及改变占空比的实现方法

目录 一、硬件及工程 二、建立工程 三、代码修改 四、下载运行 五、改变PWM波形占空比 1、定义两个全局变量 2、启动定时器 3、重写TIM3中断回调函数 六、下载并运行 一、硬件及工程 文章依赖的硬件及工程配置参考本文作者的其他文章&#xff1a;细说ARM MCU的串口接…

win制作git局域网仓库,克隆

仓库目录制作成共享文件 共享目录\USER-20230725LO 然后win使用git克隆\USER-20230725LO\git\wbrj

天马学航——智慧教务系统(移动端)开发日志八

天马学航——智慧教务系统(移动端)开发日志八 日志摘要&#xff1a;完成了对用户主界面的优化&#xff0c;再次优化数据库缓存&#xff0c;使数据库读写分离 优化主界面 优化用户界面&#xff0c;使界面看起来更加亲切贴合 主要源码 build() {Row() {Column({space:30}) {Te…

【Java】已解决java.io.InterruptedIOException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.io.InterruptedIOException异常 在Java中&#xff0c;java.io.InterruptedIOException异常通常与I/O操作被中断有关。这种中断可能由多种因素引起&#xff0c;如线程被中…

发布微信小程序需要icp证吗?

微信小程序需要办理ICP许可证吗&#xff1f; 微信小程序需不需要办理ICP许可证&#xff0c;具体要看你的小程序类目是什么&#xff0c;还要看你的小程序具体是做什么的&#xff1f; 根据《互联网信息服务管理办法》 第四条 国家对经营性互联网信息服务实行许可制度&#xff1b…