IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 一起用python写个CSDN热榜通知脚本,不再错过的自己排名变化??附源码 -> 正文阅读

[人工智能]一起用python写个CSDN热榜通知脚本,不再错过的自己排名变化??附源码

??本文收录于《从实战学python》专栏,用python实现爬虫、办公自动化、数据可视化、人工智能等各个方向的实战案例,有趣又有用!??


?点击此处跳到末尾获取源码及粉丝福利


生活有望穿秋水的期待,也会有意想不到的惊喜。

前言

哈喽,大家好,我是一条

在C站写作半年有余,每次发完文章都忍不住去看看上没上热榜,排第几名

官方的热榜消息只有在进入50名时通知一次,而且还会有延时

导致经常把时间花在看自己排名上,如果排名靠后,每次打开网页还要往下翻好久

后来还了解到原来C站大火的红心??其实只是博主想快速定位到自己的热榜位置做的标识

为了解决这个问题,一条用python写了一个脚本

功能如下:

  • 每小时爬取一次热榜
  • 如果发现自己在榜,记录排名,标题等信息
  • 邮件发送上述信息通知自己

这样无论何时何地都能知道自己的热榜排名,还节省了大量时间。

今天就带大家一起写一下这个脚本

效果展示

爬取热榜

CSDN的热榜无登录验证,所以带上header发送请求即可。

解析返回的json串,即可得到标题,排名,热度等信息

此处较为简单,爬虫基本操作,请看代码

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}

for i in range(2):
    res = requests.get("https://blog.csdn.net/phoenix/web/blog/hotRank?page={}&pageSize=50".format(i),headers=headers).json()
    if res["code"] == 200:
        data = res["data"]
        for d in data:
            userName=d["userName"]
            if(userName=="your csdn_id"):
                hotRankScore=d["hotRankScore"]
                nickName = d["nickName"]
                articleTitle = d["articleTitle"]
                articleDetailUrl = d["articleDetailUrl"]
                viewCount=d["viewCount"]
                commentCount=d["commentCount"]
                favorCount=d["favorCount"]

需要把if(userName=="your csdn_id"):改成自己的id。

搜索排名

由于没有直接返回排名,且分成了两页去查

这里自己计算一下排名

sorted=data.index(d)+1+i*50

发送邮件

发送邮件之前需要设置一下邮箱,具体教程可以参考这篇文章:不玩微博,一封邮件就能知道实时热榜,天秀吃瓜

文中使用qq邮箱教学。

import smtplib
from email.mime.text import MIMEText

def send_mail(message,sorted):
    mail_host = 'smtp.qq.com'
    mail_user = '2865866423'
    mail_pass = 'vkpurabwifwwdhfd'

    # 发送方,可以自己给自己发
    sender = '2865866423@qq.com'
    # 邮件接受方邮箱地址,可多写
    receivers = ['2865866423@qq.com']

    # 邮件内容设置,将第一个参数修改成你要发送的内容即可
    message = MIMEText(message, 'plain', 'utf-8')
    # 邮件主题
    message['Subject'] = 'CSDN热榜通知-{}'.format(sorted)
    # 发送方信息
    message['From'] = sender
    # 接受方信息
    message['To'] = receivers[0]

    try:
        smtpObj = smtplib.SMTP_SSL(mail_host)
        # 登录到服务器
        smtpObj.login(mail_user, mail_pass)
        # 发送
        smtpObj.sendmail(
            sender, receivers, message.as_string())
        # 退出
        smtpObj.quit()
        print('邮件发送成功')
    except smtplib.SMTPException as e:
        print('邮件发送失败', e)  # 打印错误

这是一段通用代码,可复用。

邮件内容

这一步就是构建邮件内容,可以自定义,也可以就用我的。

发送邮件的同时也将内容写入日志文件

time=time.strftime("%m-%d %H:%M", time.localtime())
                message="当前时间:{}\n" \
                        "尊敬的{}:\n" \
                        "恭喜您创作的《{}》已进入全站综合热榜!\n" \
                        "排名:{} \n" \
                        "热度:{} \n" \
                        "浏览量:{} \n" \
                        "评论数:{} \n" \
                        "收藏数:{} \n" \
                        "文章链接:{} \n".format(time,nickName,articleTitle,sorted,hotRankScore,viewCount,commentCount,favorCount,articleDetailUrl)
                with open("log.txt","a+",encoding='utf-8') as f:
                    f.write(message+"\n")
                send_mail(message,sorted)

对于未上榜及程序出现问题,也邮件通知

    else:
        send_mail("查询失败,程序出现故障,请及时检修!")
if(message==""):
    print("抱歉,您未上榜!")
    with open("log.txt","a+",encoding='utf-8') as f:
        f.write("抱歉,您未上榜!")
    send_mail("抱歉,您未上榜!","0")

完整源码

点击文末卡片,关注后回复「CSDN」获取

如卡片在审核中,请私信博主。

🌈寻宝

?今天是坚持刷题更文的第63/100天

?各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力

为了回馈各位粉丝,礼尚往来,给大家准备了一条多年积累下来的优质资源,包括 学习视频、面试资料、珍藏电子书等

在这里插入图片描述

点击下方卡片领取👇👇👇

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:08:28  更:2021-09-18 10:08:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 14:45:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码