当前位置:首页 » 《随便一记》 » 正文

一起用python写个CSDN热榜通知脚本,不再错过的自己排名变化❤️附源码_一条coding

5 人参与  2021年11月29日 07:03  分类 : 《随便一记》  评论

点击全文阅读


❤️本文收录于《从实战学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天

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

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

在这里插入图片描述

点击下方卡片领取👇👇👇


点击全文阅读


本文链接:http://zhangshiyu.com/post/31367.html

排名  邮件  自己的  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 她的记忆停留在了最爱初恋的那年许欣柔楚临川完本_她的记忆停留在了最爱初恋的那年(许欣柔楚临川)
  • 全书浏览假千金的实习生男友霸占我办公室,我反手让他们倾家荡产(顾家明)_假千金的实习生男友霸占我办公室,我反手让他们倾家荡产(顾家明)全书结局
  • 童养夫让我给他的新欢出修复费(林嘉芝林思雅)_童养夫让我给他的新欢出修复费林嘉芝林思雅
  • 全文资助生女婿让我给他白月光付三千万月子中心钱(宋清玉宋雅)列表_全文资助生女婿让我给他白月光付三千万月子中心钱
  • 碎在时光里的谎言喻景宴秦明月完本_碎在时光里的谎言(喻景宴秦明月)
  • 旧爱剜心吻成灰席鄢之岑秋全书免费旧爱剜心吻成灰席鄢之岑秋全书免费
  • 结婚六年丈夫不碰我谁知儿子亲爹是寡头(纪清言傅司砚),结婚六年丈夫不碰我谁知儿子亲爹是寡头
  • 老公想换掉我的男胎,我笑他自不量力(宋薇于继业)_老公想换掉我的男胎,我笑他自不量力宋薇于继业
  • 给太子下了噬心蛊后,皇后找上门(小夭赵劼)全书浏览_给太子下了噬心蛊后,皇后找上门全书浏览
  • 豪门绝嗣!带球跑的夫人回来了!(谢长宴慕清杳)_豪门绝嗣!带球跑的夫人回来了!谢长宴慕清杳
  • 完美身材(李朵林之晴)_完美身材李朵林之晴
  • 离婚后,我和快穿系统绑定(白意秋陈荣周立慧)_离婚后,我和快穿系统绑定(白意秋陈荣周立慧)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1