通过Python+Selenium获取我的所有文章质量分

news2024/11/17 13:18:20

文章目录

  • 前言
  • 一、背景
  • 二、设计
  • 三、环境准备
  • 四、开发
    • 1.查询文章数量
      • 1.1请求url
      • 1.2响应结果
      • 1.3代码
    • 2.获取每页文章列表
      • 2.1请求url
      • 2.2响应结果
    • 3.获取所有文章url
      • 3.1代码
    • 4.保存excle方法
      • 4.1代码
    • 5.查询所有文章质量分并写入excle
      • 5.1代码
    • 6.程序入口
      • 6.1代码
    • 7.需要引入的模块
  • 五、效果
  • 总结

前言

大家好,我是空空star,本篇给大家分享一下《通过Python+Selenium获取我的所有文章质量分》

一、背景

目前在质量分查询界面只能一篇文章一篇文章查,如果我们想快速知道我们哪些文章质量分不是高质量,手动一篇一篇查太慢,借助Selenium代替手动,快速查出我们所有文章的质量分,然后再保存成excle。这样我们就可以很直观得看到哪些文章不是80分以上。

当然,也可以直接通过质量分接口去查询,接口做了HMAC认证,感兴趣的同学可以尝试。

二、设计

  1. 查询我的所有文章数量;
  2. 根据文章数量计算翻页数;
  3. 获取每页的文章url;
  4. 遍历页数,将每页的文章url添加到数组article_list中;
  5. 遍历article_list,通过Selenium去查质量分相关信息;
  6. 将查到的信息列分别放到对应的数组中;
  7. 通过pandas将质量分相关列信息写入excle。

三、环境准备

浏览器:本篇使用的是Chrome
Chrome驱动版本:110.0.5481.77
Python版本:Python3.8
selenium版本: 4.8.2
Selenium基础篇之环境准备

四、开发

1.查询文章数量

1.1请求url

1.2响应结果

1.3代码

def get_article_total(username):
    url = 'https://blog.csdn.net/community/home-api/v1/get-tab-total'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763'
    }
    params = {'username': username}
    response = requests.get(url, params=params, headers=headers)
    return response.json()['data']['blog']

2.获取每页文章列表

2.1请求url

2.2响应结果

通过请求参数,可以看到每次最多返回20个,那么翻页数就是:
max_page = math.ceil(blog_total/20)

3.获取所有文章url

3.1代码

def get_article_list(username):
    article_list = []
    url = 'https://blog.csdn.net/community/home-api/v1/get-business-list'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763'
    }
    blog_total = get_article_total(username)
    max_page = math.ceil(blog_total/20)
    for page in range(1, max_page+1):
        params = {'page': page, 'size': 20, 'businessType': 'blog', 'username': username}
        response = requests.get(url, params=params, headers=headers)
        for item in response.json()['data']['list']:
            article_list.append(item['url'])
    return article_list

4.保存excle方法

4.1代码

def save_excle(filename,post_time_list,title_list,score_list,remark_list,article_list):
    data = {'作者-发布时间': post_time_list, '文章标题': title_list, '质量分': score_list, '分数说明': remark_list, '文章url': article_list}
    df = pd.DataFrame(data)
    writer = pd.ExcelWriter(filename+'.xlsx')
    df.to_excel(writer, index=False)
    writer.save()

5.查询所有文章质量分并写入excle

5.1代码

def get_score(username):
    post_time_list = []
    article_list = get_article_list(username)
    title_list = []
    score_list = []
    remark_list = []
    cnt = 0
    for blog_url in article_list:
        cnt += 1
        driver.find_elements(By.CLASS_NAME, 'el-input__inner')[0].send_keys(blog_url)
        print(f'开始进行第{cnt}次查询')
        driver.find_elements(By.CLASS_NAME, 'trends-input-box-btn')[0].click()
        time.sleep(1)
        texts = driver.find_elements(By.TAG_NAME, 'p')
        title = driver.find_elements(By.TAG_NAME, 'span')[3].text
        post_time = driver.find_elements(By.TAG_NAME, 'span')[4].text
        post_time_list.append(post_time)
        title_list.append(title)
        score_list.append(texts[1].text)
        remark_list.append(texts[2].text)
    print('查询完毕!开始写入excle。')
    save_excle(username, post_time_list, title_list, score_list, remark_list, article_list)
    print('写入excle完毕!')

6.程序入口

只需要把username改成你的即可

6.1代码

if __name__ == '__main__':
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    driver = webdriver.Chrome(options=options)
    driver.get('https://www.csdn.net/qc')
    driver.maximize_window()
    get_score('weixin_38093452')
    driver.quit()

7.需要引入的模块

import math
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
import requests
import pandas as pd

五、效果

总结

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

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

相关文章

Copilot是GPT的理想应用模式吗?

自OpenAI发布ChatGPT以来,LLM持续火热,各大公司纷纷入场。但近一段时间以来,我观测到的LLM应用场景,基本都是Copilot的形式,即以对话为基础的辅助应用。尽管体验起来十分的高大上,但我能明确感受到&#xf…

微信小程序发布上线全流程 注册 开发 上传审核

微信小程序接入全流程 微信小程序从零到上线,要经历小程序账号注册开通、完善小程序信息、开发小程序、提交小程序审核及发布四个过程: 以下是微信小程序发布上线的详细流程: 确认小程序信息:在微信公众平台注册并登录后&#…

【C语言进阶】预处理那些事儿

文章目录 📖预定义符号📖预处理指令📖#define 🔖#define定义标识符🔖#define定义宏🔖#define替换规则🔖#和##🔖带有副作用的宏参数🔖宏和函数的对比🔖命名约定…

正点原子 STM32F4/F7水星 开发板资料连载第二十一章LTDC LCD实验

正点原子 STM32F4/F7水星 开发板资料连载第二十一章LTDC LCD实验 - 知乎 (zhihu.com) 本章我们将通过 STM32F767 的 LTDC 接口来驱动 RGBLCD 的显示,另外,STM32F767 的 LTDC 还有DMA2D 图形加速,我们也顺带进行介绍。本节分为三个部分&#…

Kubernetes学习笔记-kubernetes应用扩展(1)-自定义API对象20230622

1、CustomResourceDefinitions介绍 开发者只需要只需向kubernetes api服务器提交CRD对象,即可定义新的资源类型。成功提交CRD之后,就能通过API服务器提交JSON清单或者YAML清单的方式创建自定义资源,以及其他kubernetes资源实例 创建一个CRD…

SpringCloud Alibaba入门6之Nacos配置

一、基本概念 1.命名空间 用于区分环境,开发、测试、生产环境等。 2.配置分组 多个配置文件放在一起,形成组。 3.配置集 一般指一个配置文件 4.配置集ID 这个配置文件全局唯一ID 5.配置项 配置的键值对 二、引入Nacos配置中心 我们在用户模块…

探索安卓内容提供者:构建、访问和管理数据【复习】

文章目录 一 ContentProvider1.1 数据模型- **ContentProvider 使用基于数据库模型的简单表格来提供需要共享的数据**,在该表格中,每一表示一条记录,而每一列代表特定类型和含义的数据,并且其中每一条数据记录都包含一个名为“_ID…

团体程序设计天梯赛-练习集L1篇⑤

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

概率论与数理统计教程第五章节笔记

参考书籍:概率论与数理统计教程第三版 茆诗松 程依明 濮晓龙 编著 文章声明:如有错误还望批评指正 文章目录 ξ 5.1 \xi5.1 ξ5.1总体与样本 ξ 5.2 \xi5.2 ξ5.2样本数据的整理与显示Python绘制直方图Python绘制茎叶图 ξ 5.3 \xi5.3 ξ5.3统计量及其分…

非煤电子封条系统 yolov7

非煤电子封条系统通过yolov7python网络模型技术,非煤电子封条系统利用智能化AI视频分析,实时监测分析矿井出入井人员人数变化、非煤及煤矿生产作业状态等情况,自动生成、推送报警信息,提示相关人员采取应急措施。Python是一种由Gu…

最火的几款STM32 F系列对比

最火的几款STM32 F系列对比 最常用且相对热门STM32F103系列STM32F407系列STM32F429系列STM32F746系列 最常用且相对热门 在STM32F系列中,以下是一些最常用且相对热门的芯片: STM32F103系列:这个系列是STM32F系列中最受欢迎的型号之一。它基于…

二进制安装K8S(单Master集群架构)

目录 一、安装K8S1、单Master集群架构2、操作系统初始化配置3、部署docker引擎4、部署 etcd 集群5、部署 Master 组件6、部署 Worker Node 组件7、部署 CNI 网络组件7.1 部署 flannel7.2 Flannel udp 模式的工作原理(必备面试题)7.3 Flannel vxlan 模式的…

Nexus如何导入jar以及批量导入Maven的本地库目录

前言 本篇基于 Nexus 的版本是 nexus-3.55.0-01本方法适用Linux和WindowsWindows 需要安装Git , 使用Git Bash执行 Nexus上传依赖包的方式 上传依赖包到Nexus 服务器的方式有多种, 包含: 单个jar上传: 在Nexus管理台页面上传单个jar源码编…

springboot高级教程基于 redis 通过注解实现限流

Spring Boot整合Redis有一种方便的方式是使用注解方式实现限流。 可以通过自定义注解的方式来标注需要限流的方法,在方法执行前进行限流的检查。 以下是具体实现方式: 1. 自定义注解RedisLimit,并定义注解元素,如限流的时间、限流…

MIT 6.S081 Lab Four

MIT 6.S081 Lab Four 引言trapsRISC-V assembly (easy)代码解析 Backtrace(moderate)代码解析 Alarm(Hard)test0: invoke handler(调用处理程序)test1/test2(): resume interrupted code(恢复被中断的代码)代码解析issue解答 可选的挑战练习 引言 本文为 MIT 6.S081 2020 操作…

「端午记忆,AI绘梦」微信群AI绘图比赛

点击上方「蓝字」,关注我们 01 活动介绍 亲爱的朋友们, 端午节即将来临,让我们一起用AI唤醒记忆,回忆古老传统的魅力。 这次活动,我们邀请大家进入一个微信群,一起用AI画出你记忆中端午的样子。 无论你是画…

一文通关Spring MVC

目录 🐳今日良言:少年负壮气,奋烈自有时 🐳一、Spring MVC的相关介绍 🐕1.Spring MVC的定义 🐕2.MVC 和 Spring MVC的关系 🐳二、Spring MVC的创建及使用 🐯1.Spring MVC项目创…

Spring Boot 如何使用 Log4j2 进行日志记录

Spring Boot 如何使用 Log4j2 进行日志记录 在开发 Java 应用程序时,日志记录是非常重要的一环。Spring Boot 提供了多种日志输出方式,其中 Log4j2 是一种比较常用的日志框架。本文将介绍如何在 Spring Boot 应用程序中使用 Log4j2 进行日志记录。 为什…

Verilog基础:标识符的向上向下层次名引用

相关文章 Verilog基础:表达式位宽的确定(位宽拓展) Verilog基础:表达式符号的确定 Verilog基础:数据类型 Verilog基础:位宽拓展和有符号数运算的联系 Verilog基础:case、casex、ca…

基于阿尔法均值滤波的FPGA图像系统(工程+原理图+PCB+仿真)

目录 前言一、研究背景及意义二、本文研究内容三、硬件系统框架设计1、总框架设计2、原理图&PCB设计3、实物设计4、电路介绍 三、中值滤波算法研究及改进1、图像噪声的产生及危害2、中值滤波算法3、高斯滤波算法4、改进的中值滤波算法(α均值滤波算法&#xff0…