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

CSDN 自动评论互动脚本

在这里插入图片描述
在这里插入图片描述

声明

该脚本的目的只是为了提升博客创作效率和博主互动效率,希望大家还是要尊重各位博主的劳动成果。

数据库设计

尽量我们要新建一个数据库csdn_article,再在其中建一个数据表article

-- csdn_article-- article-- 需要进行自动评论的表格信息...
CREATE TABLE `article` (`articleId` bigint NOT NULL COMMENT 'id',`articleDetailUrl` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'url',`articleTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标题',`nickName` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '昵称',`hotRankScore` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '热度',`comment` int NOT NULL DEFAULT '0' COMMENT '是否评论(0,否,1是)',`like` int NOT NULL DEFAULT '0' COMMENT '是否点赞(0,否,1是)',`insert_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`articleId`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

代码

import random, time, os, threading
import requests
import pymysql
from dbutils.pooled_db import PooledDB
from schedule import every, repeat, run_pending
import jsonPOOL = PooledDB(creator=pymysql,  # 使用链接数据库的模块maxconnections=20,  # 连接池允许的最大连接数,0和None表示不限制连接数mincached=6,  # 初始化时,链接池中至少创建的空闲的链接,0表示不创建maxcached=None,  # 链接池中最多闲置的链接,0和None不限制maxshared=5,blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错maxusage=None,  # 一个链接最多被重复使用的次数,None表示无限制setsession=[],  # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]ping=0,  # ping MySQL服务端,检查是否服务可用。host='127.0.0.1', port=3306, user='xxx', password='xxx', database='csdn_article', charset='utf8')def insert_article(articleId, articleDetailUrl, articleTitle, nickName, hotRankScore):print("===【插入文章】运行开始 ===\n")db = POOL.connection()conn = db.cursor()  # 使用cursor()方法获取操作游标sql = "INSERT INTO `article` (`articleId`, `articleDetailUrl`, `articleTitle`, `nickName`, `hotRankScore`) VALUES (%s, %s, %s, %s, %s);"data = (articleId, articleDetailUrl, articleTitle, nickName, hotRankScore)conn.execute(sql, data)    # 使用execute方法执行SQL语句data = db.commit()  # 使用 fetchone() 方法获取一条数据db.close()print("===【插入文章】运行结束 ===\n")return datadef select_is_insert(articleId):print("===【检查文章是否已插入】运行结束 ===\n")db = POOL.connection()conn = db.cursor()  # 使用cursor()方法获取操作游标conn.execute("SELECT COUNT(*) FROM `article` WHERE `articleId` = %s;" % articleId)  # 使用execute方法执行SQL语句data = conn.fetchall()  # 使用 fetchone() 方法获取一条数据db.close()print("===【检查文章是否已插入】运行结束 ===\n")return data[0][0]def select_is_comment():  # 查询没有评论的数据print("===【查询未评论文章】运行开始 ===\n")db = POOL.connection()conn = db.cursor()  # 使用cursor()方法获取操作游标conn.execute(# "SELECT `articleId`,`articleDetailUrl` FROM `article` WHERE `comment` = '0' LIMIT 0, 2;")  # 使用execute方法执行SQL语句"SELECT `articleId`,`articleDetailUrl` FROM `article` WHERE `comment` = '0' LIMIT 0, 10;")data = conn.fetchall()  # 使用 fetchone() 方法获取一条数据db.close()print("===【查询未评论文章】运行结束 ===\n")return datadef update_article(articleId, comment=1):print("===【更新文章评论状态(未评论->已评论)】运行开始 ===\n")db = POOL.connection()conn = db.cursor()  # 使用cursor()方法获取操作游标conn.execute("UPDATE `article` SET  `comment` =%s WHERE `articleId` = %s;" % (comment, articleId))  # 使用execute方法执行SQL语句data = db.commit()  # 使用 fetchone() 方法获取一条数据db.close()print("===【更新文章评论状态(未评论->已评论)】运行结束 ===\n")return datadef comment(articleId):"""评论"""print("===【评论功能】运行开始 ===\n")# time.sleep(5)# user_headers = {#     'Host': 'blog.csdn.net',#     'Connection': 'keep-alive',#     'Content-Length': '75',#     'sec-ch-ua

相关文章:

  • sudo apt install make;make build ;make start
  • 手撕算法|斯坦福大学教授用60页PPT搞定了八大神经网络
  • mybatis plus 配置多数据源(数据源进行切换)
  • ssm139选课排课系统的设计与开发+vue
  • Pytorch: 解决因pytorch版本不同 导致训练ckpt加载失败
  • FPGA 纯逻辑arinc818 ip core
  • 力扣-2904最短且字典序最小的美丽子序列
  • 【机器学习300问】95、什么是KNN算法?它和K-means什么关系?
  • 网络协议——有状态协议和无状态协议
  • linux下删除nginx进程
  • 自主创新助力科技强军,麒麟信安闪耀第九届军博会
  • 轻松拿捏C语言——【字符串函数】的使用及模拟实现
  • python02 循环与容器
  • DSVPN综合实验
  • 【JAVA基础之网络编程】UDP和TCP协议以及三次握手和四次挥手的过程
  • JavaScript 如何正确处理 Unicode 编码问题!
  • Asm.js的简单介绍
  • CSS 提示工具(Tooltip)
  • IP路由与转发
  • isset在php5.6-和php7.0+的一些差异
  • Logstash 参考指南(目录)
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 订阅Forge Viewer所有的事件
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我感觉这是史上最牛的防sql注入方法类
  • 我看到的前端
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​【已解决】npm install​卡主不动的情况
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​Python 3 新特性:类型注解
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #pragam once 和 #ifndef 预编译头
  • $.ajax()方法详解
  • $GOPATH/go.mod exists but should not goland
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (poj1.3.2)1791(构造法模拟)
  • (Python) SOAP Web Service (HTTP POST)
  • (ros//EnvironmentVariables)ros环境变量
  • (八)c52学习之旅-中断实验
  • (独孤九剑)--文件系统
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)nsfocus-绿盟科技笔试题目
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET 的程序集加载上下文
  • .net 反编译_.net反编译的相关问题
  • .net(C#)中String.Format如何使用
  • .NET多线程执行函数
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2