Python如何获得百度统计API的数据并发送邮件示例代码


Posted in Python onJanuary 27, 2019

小工具

本来这么晚是不准备写博客的,当是想到了那个狗子绝对会在开学的时候跟我逼逼这个事情,所以,还是老老实实地写一下吧。

Baidu统计API的使用

系统环境:

Python2

  • requests库:发出请求
  • json库:json处理

getSiteList的使用

官方文档在此,说实话,这是我使用百BaiduAPI最坑的一次,在这个官方文档的getSiteList中,完全不告诉你请求参数是什么。

首先,需要获得百度统计API的token,在这里写了token获得的流程。

# encoding=utf-8
import requests
import json

siteListUrl = "https://api.baidu.com/json/tongji/v1/ReportService/getSiteList"

# 这个是请求的数据
data = {
 "header": {
  'username': "你的用户名",
  'password': "你的密码",
  'token': '前面所获得的token',
  'Content-type': 'application/json'
 }
}
# 把请求数据变成json数据
data = json.dumps(data)

r = requests.post(url,data=data)

# 在返回的信息中包含了网站的id等等,这些官方有说明
print r.text

getData的使用

# 假设我的网站的ID是:12914021,

getDataUrl = "https://api.baidu.com/json/tongji/v1/ReportService/getData"

# 请求数据如下
data = {
 "header": {
  'username': "你的用户名",
  'password': "你的密码",
  'token': '前面所获得的token',
  'Content-type': 'application/json'
 },

 # 这个body的请求参数可以去参考官方说明,在这里我只是想获取pv和uv的数据
 "body": {
  'site_id': 12914021,
  'method': 'trend/time/a',
  # 开始统计时间
  'start_date': '20190125',
  # 结束统计时间
  'end_date': '20190126',
  # 获得pv和uv数据
  'metrics': 'pv_count,visitor_count'
 }
}

r = requests.post(getDataUrl,data=json.dumps(data))
result = json.loads(r.text)
pv_uv = result["body"]["data"][0]["result"]["pageSum"][0]
# 页面浏览量
pv = pv_uv[0]
# 独立访客数
uv = pv_uv[1]

print pv_uv # 例如[120,100]

此时,我们就已经获得了pv和nv的数据。

使用Python发送邮件

Python2

  • requests库:发出请求
  • json库:json处理

在这里,我使用的是SMTP协议去发送邮件,使用的是QQ邮箱,QQ邮箱的开启,参考百度经验。

from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL

# qq邮箱smtp服务器
hostServer = 'smtp.qq.com'
# 发送者的邮箱
sendMail = '你的QQ邮箱'
receiveMail = '接收方的邮件地址'

# ssl登录
smtp = SMTP_SSL(hostServer)

# 发送者的QQ,以及授权码
smtp.login('你的qq', '授权码')

# plain代表发送为文本
msg = MIMEText("你要发送的内容", "plain", 'utf-8')
# 发送的标题
msg["Subject"] = Header("帅哥的邮件", 'utf-8')

# 发送方
msg["From"] = sendMail
# 接收方
msg["To"] = receiveMail
# 发送邮件
smtp.sendmail(sendMail, receiveMail, msg.as_string())
# 退出
smtp.quit()

结合使用

代码写的耦合度比较高,如果使用的话,需要根据自己的实际情况去修改

# encoding=utf-8
import time
import requests
import json
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL

# 获得时间 格式为:【20190125】
nowTime = time.strftime("%Y%m%d", time.localtime())
# 发送方的QQ
sendQQ = "xxx"
# 接收方的邮件地址
receiveMail = "xxx"
# 百度统计token
token = "xxx"
# 需要查询的网站id
siteId = xxx
# qq邮箱授权码
mailCode = "xxx"


def get_pv_uv():

 dataUrl = "https://api.baidu.com/json/tongji/v1/ReportService/getData"

 body = {
  "header": {
   'username': "xxx",
   'password': "xxx",
   'token': token,
   'Content-type': 'application/json'
  },
  "body": {
   'site_id': siteId,
   'method': 'trend/time/a',
   'start_date': nowTime,
   'end_date': nowTime,
   'metrics': 'pv_count,visitor_count'
  }

 }

 r = requests.post(dataUrl, data=json.dumps(body))
 result = json.loads(r.text)
 pv_uv = result["body"]["data"][0]["result"]["pageSum"][0]
 return pv_uv


def sendMail(pv_uv):


 # 邮件的正文内容
 mailContent = "小主,晚上好,这是昨天的统计数据,昨天的博客园一共有%s个人访问了小主你的博客,其中独立访客有%s位。\n小主你要加油写博客哦,有朝一日,你总会成为大佬的!(*^__^*) 嘻嘻……" % (pv_uv[0],pv_uv[1])
 
 # qq邮箱smtp服务器
 hostServer = 'smtp.qq.com'
 sendEmail = sendQQ+'@qq.com'

 # ssl登录
 smtp = SMTP_SSL(hostServer)

 smtp.login(sendQQ, mailCode)
 msg = MIMEText(mailContent, "plain", 'utf-8')
 msg["Subject"] = Header("博客园统计邮件", 'utf-8')
 msg["From"] = sendEmail
 msg["To"] = receiveMail
 smtp.sendmail(sendEmail, receiveMail, msg.as_string())
 smtp.quit()

sendMail(get_pv_uv())

这时候,我们就可以将我们的python程序部署在Linux云服务器上面,那么我们怎么能够让这个程序在每天的23.30分运行呢?这时候我们就可以使用Linux上面的crontab了。

进入linux,输入crontab -e,然后在里面30 23 * * * python ~/Home/tongji.py【你的Python文件地址】 >> tongji.txt就可以设置为,在晚上的11.30分发送该邮件。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
全面解读Python Web开发框架Django
Jun 30 Python
Python MySQLdb Linux下安装笔记
May 09 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
详解django中自定义标签和过滤器
Jul 03 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
基于tensorflow加载部分层的方法
Jul 26 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
python 内置函数汇总详解
Sep 16 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
Python创建临时文件和文件夹
Aug 05 Python
python使用正则筛选信用卡
Jan 27 #Python
pthon贪吃蛇游戏详细代码
Jan 27 #Python
只需7行Python代码玩转微信自动聊天
Jan 27 #Python
python实现贪吃蛇游戏
Mar 21 #Python
Python制作动态字符图的实例
Jan 27 #Python
python贪吃蛇游戏代码
Apr 18 #Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 #Python
You might like
PHP获取网站域名和地址的代码
2008/08/17 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Form表单及django的form表单的补充
2019/07/25 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
css3学习心得分享
2013/08/19 HTML / CSS
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
财务管理专业求职信
2014/06/11 职场文书
商家认证委托书格式
2014/10/16 职场文书
企业介绍信范文
2015/01/30 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
网络舆情信息简报
2015/07/21 职场文书
工作报告范文
2019/06/20 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技