Python写的CSDN信息推送小助手

转载请注明出处:http://blog.csdn.net/gamer_gyt

博主微博:http://weibo.com/234654758

Github:https://github.com/thinkgamer


前言

这几天突然萌生了一个想法:自己写个python程序,定时查询一下自己的CSDN博客的一些信息,并以邮件的形式推送给自己,那么废话不多说,现在已经把基本功能给实现了,每天可以定时发送访问量,积分,排名,同时会比较前一天的数据,形成对比,呈现给自己,这样就能一目了然的看到自己每天博客的PV增加数目了,如果你感兴趣,拿去玩吧

本文永久地址:http://blog.csdn.net/gamer_gyt/article/details/53823842


内容包括

由于是第一版,实现的功能比较简单,只是发送自己博客的PV,积分,排名,原创文章数,转载文章数,翻译文章数,评论条数和同比前一天的增长数量

后续计划:封装成web的形式,融合自己之前做的一个博客统计分析系统,使之前的产品更加完善,而且会逐步封装成谷歌浏览的插件形式,供大家使用方便

博客统计分析系统git地址:https://github.com/Thinkgamer/BlogAnalysic


代码结构

说明:

  • 这里并没有采用数据库存储,而是直接写进csv文件,后续会更新
  • 这里对每篇文章的数据也做了解析,只不过暂时注释了,没有进行推送,因为还没想好合适的方式

涉及的技术

目前涉及:

  • python 爬虫
  • python 发送email

主要代码

别的代码都比较烂,这里主要说一下python发送email示例

#-*-coding:utf-8-*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_email():
    message = "test"
    # 第三方 SMTP 服务,我这里设置的是网易163邮箱
    mail_host = "smtp.163.com"  # 设置服务器
    mail_user = "[email protected]"  # 用户名
    mail_pass = "xxxxxxxxxxx"  # 密码

    sender = "[email protected]"
    receive="[email protected]"

    # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
    message = MIMEText(message, ‘plain‘, ‘utf-8‘)
    message[‘From‘] = Header(sender, ‘utf-8‘)
    message[‘To‘] =  Header(receive, ‘utf-8‘)

    subject = ‘CSDN博客访问信息统计‘
    message[‘Subject‘] = Header(subject, ‘utf-8‘)

    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host, 25)    # 25 为 SMTP 端口号
        smtpObj.login(mail_user,mail_pass)
        smtpObj.sendmail(sender, receive, message.as_string())
        print("邮件发送成功")
    except smtplib.SMTPException as e:
        print("Error: 无法发送邮件")

说明:我这里的发送邮箱和接收邮箱都是我的163邮箱,原因是我刚开始测试的是QQ邮箱接受,但是万恶的网易把这个邮件当成垃圾邮件,发送不出去,会提示:

(554, b‘DT:SPM 163 smtp9,DcCowABXdex2kFtYogSVEQ....

提示的url只指向:http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

谷歌了好久,也没有找到解决办法,于是乎就换成163邮箱来接受了,当然如果你看了这篇文章,你也解决了这个办法,那么请留言告诉我,谢谢


效果图

来一张我邮箱接受到的邮件的效果图吧

如果你对这个代码感兴趣的话,或者你也想接受这个信息推送的话,留下的163邮箱吧,因为别的我怕发不出去(代码地址:点击查看)~~~~


补充内容:python发送短信

使用互亿无线的短信接口发送短信,只不过他是收费的,但是有30条的测试

注册一个账号,将代码中的用户名和密码换成你自己的即可,另外我这里使用的是python3.4,官网上给的python样例代码时2.7,直接运行不好使,需要修改一些小地方,代码如下:

#-*- coding:utf-8 -*-
import http.client
import urllib.request

host  = "106.ihuyi.com"
sms_send_uri = "/webservice/sms.php?method=Submit"

#用户名是登录ihuyi.com账号名(例如:cf_demo123)
account  = "xxxxx"
#密码 查看密码请登录用户中心->验证码、通知短信->帐户及签名设置->APIKEY
password = "xxxxxx"

def send_sms(text, mobile):
    params = urllib.parse.urlencode({‘account‘: account, ‘password‘ : password, ‘content‘: text, ‘mobile‘:mobile,‘format‘:‘json‘ })
    headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
    conn = http.client.HTTPConnection(host, port=80, timeout=30)
    conn.request("POST", sms_send_uri, params, headers)
    response = conn.getresponse()
    response_str = response.read()
    conn.close()
    return response_str

if __name__ == ‘__main__‘:

    mobile = "171xxxx1234"
    text = "您的验证码是:121254。请不要把验证码泄露给其他人。"

    print(send_sms(text, mobile))

手机收到的短信如下:



个人微信公众号,欢迎关注

时间: 2024-07-31 04:30:42

Python写的CSDN信息推送小助手的相关文章

Android Push Notification实现信息推送使用

本贴在http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html下略为改动. Apndroid Push Notification的特点:  快速集成:提供一种比C2DM更加快捷的使用方式,避免各种限制. 无需架设服务器:通过使用"云服务",减少额外服务器负担. 可以同时推送消息到网站页面,android 手机 耗电少,占用流量少. 具体配置过程:  首先, 我们需要下载androidpn-client-0.5.0.

android后台信息推送调研

android后台信息推送调研 前言 我们已经开发了一个应用,这里称为A应用,类似于天气weather那种.现在的任务就是如果这些A应用有新版本了,或者天气出现比较恶劣的状况,要及时在手机上进行消息的推送,提示有新的应用可以更新了,和天气将要变遭了,提醒用户需要注意的情况.及需要实现消息推送机制. 推送方式基础知识 要获取服务器上不定时更新的信息,一般来说有两种方法:第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现.第二种就是 服务器使用Pu

PhoneGap实现信息推送-基于极光推送(Android版)

极光推送插件安装地址: https://github.com/jpush/jpush-phonegap-plugin 安装插件后,需要在AndroidManifest.xml中配置极光平台申请的App Key: <meta-data android:name="JPUSH_APPKEY" android:value="aca4b37e5c00d477b*****" /> 在JPushPlugin.java文件的22行处有报错,需要把这里修改为你自己的主包

利用Ajax+MSMQ(消息队列)+WebService实现服务器端向客户端的信息推送

需求: 每当数据库有数据更新时,推送到客户端 软需求: 1.服务器资源有限,要求资源占用尽可能小: 2.项目可控,不许调用第三方不可信不稳定的方法. 已有事例: 1.58到家采用的方法是TCP的长连接,对服务器压力较大: 2.redis等提供了订阅推送服务,开源,但是定制化对开发者其开发语言水平要求较高,笔者水平达不到 最终方案: 解释: ①②页面加载时第一次请求数据,返回数据,加载,调用ajax2 ③页面加载即发出请求,但是此时没有数据,于是就block,等待其他组件insert msg ④收

Python之钉钉机器人推送天气预报

通过Python脚本结合钉钉机器人,定时向钉钉群推送天气预报 #!/usr/bin/python # -*- coding: utf-8 -*- # Author: [email protected] # My blog http://m51cto.51cto.blog.com import requests import re import urllib2 import json import sys import os headers = {'Content-Type': 'applicat

使用log4net+IExceptionFilter+Server酱完成异常日志信息推送

异常在开发当中总是存在的,开发人员和测试人员不可能24小时,呆在电脑旁边处理异常.而将这些异常要点记录下来形成日志,则是很有必要的,这将有助于我们快速定位解决问题,提高效率,减少人力成本. 新建.net core api项目 新建API控制器StudentController,更改route规则,新建动作方法ExceptionTest,里面写入一个错误.新建基础设施层类库Util. 引入log4net日志框架,并完成相关配置 在Util层安装log4net包 在API层下新建log4net.co

信息推送(单点更新,求前缀和)

https://codeforces.com/contest/1288/problem/E 题意:n条信息,刚开始顺序为1-n,m次操作,每一次操作将某条信息置顶,其他信息后移 问每一条信息距离顶部最小距离和最大距离. 解法:扩大区间长度为n+m,利用树状数组进行单点更新和求前缀和,另用一个数组记录每一个点位置. //#include <bits/stdc++.h> #include <cstdio> #include <cstring> #include <cm

python写的的简单的爬虫小程序

import re import urllib def getHtml(url): page=urllib.urlopen(url) html=page.read() return html def getpic(html): s=r'src="(.*?\.jpg)" pic_ext' piclist=re.findall(s,html) x=0 for imgurl in piclist: urllib.urlretrieve(imgurl,'%d.jpg'%x) x=x+1 htm

读《架构师于小波:魅族实时消息推送架构》总结

原文网址:http://www.csdn.net/article/2015-12-22/2826542 1.系统架构设计.系统架构逻辑上划分,划分为四层,最下面的一个是提供魅族手机的接入.第二层是消息分发服务,主要的作用就是提供上行消息的路由和用户下行消息的路,这边有一个用户路由表.第三层是订阅信息,第四层是存储,包括离岸消息存储,包括订阅消息的存储. 2.手机功耗问题主要涉及两个点,第一个是流量,第二个是电量.先看流量的问题,怎么样解决流量的问题,通过协议选择,现在传统的互联网上,有比较典型的