Python获得百度统计API的数据并发送邮件
Python获得百度统计API的数据并发送邮件
本来这么晚是不准备写博客的,当是想到了那个狗子绝对会在开学的时候跟我逼逼这个事情,所以,还是老老实实地写一下吧。
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分发送该邮件。
晚上还是不适合写博客,不然写着写着就饿了,/(ㄒoㄒ)/~~
Python获得百度统计API的数据并发送邮件的更多相关文章
- 百度统计api获取数据
需求场景 想要了解每天多少人访问了网站,多少个新增用户,地域分布,点击了哪些页面,停留了多久,等等... 国内用的最多的就是百度统计吧,傻瓜式的注册然后插一段代码到项目里就行了. 最近也在自己的博客里 ...
- 百度统计API的使用
百度统计API的使用 在搭建自己博客的时候,希望自己能有个日志系统,能够看到PV.UV等信息,同时自己也搭建了个ELK系统,可惜服务器配置太低(1GHZ+1G内存),根本运行不起来.只能使用第三方的日 ...
- Python 调用百度翻译API
由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...
- 百度统计api 关于搜索引擎返回参数问题
当 post 的参数: 返回参数为: 很显然没有搜索引擎的相关名称返回,无法分辨相关引擎的数据量: 改:去掉 gran 参数 正常: 关于百度统计文档有很多模糊不清的地方,可以发邮件给官方了解,一般处 ...
- 百度地图API获取数据
目前,大厂的服务范围越来越广,提供的数据信息也是比较全的,在生活服务,办公领域,人工智能等方面都全面覆盖,相对来说,他们的用户基数大,通过用户获取的信息也是巨大的.除了百度提供api,国内提供免费AP ...
- Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)
1.获取秘钥 调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥.链接如下:http://lbsyun.baidu.com/apiconsole/key?applicatio ...
- Python使用百度地图API根据地名获取相应经纬度
今天有个需求,要根据地名获取经纬度坐标值. 于是我第一想法:打开百度地图,手动输入地名,获取.显然当地名较少时,可实施.然而,当地名较多时,此方法显然工作量很大. 于是,第二想法:代码获取,请求百度地 ...
- nodejs调用百度统计api摆脱人肉数据统计
var http = require("https"); var url = require('url'); var postData = JSON.stringify( { &q ...
- 小白学Python——用 百度翻译API 实现 翻译功能
本人英语不好,很多词组不认识,只能借助工具:百度翻译和谷歌翻译都不错,近期自学Python,就想能否自己设计一个百度翻译软件呢? 百度翻译开放平台: http://api.fanyi.baidu.co ...
随机推荐
- web网页、手机app设计规范
app设计规范 目前,很多APP设计师的APP Ui设计稿是先做iPhone6的,方便向上适配iPhone6Plus,也方便向下适配iPhone5和iPhone4的尺寸.这一节课也算是25学堂为大家精 ...
- Machine learning | 机器学习中的范数正则化
目录 1. \(l_0\)范数和\(l_1\)范数 2. \(l_2\)范数 3. 核范数(nuclear norm) 参考文献 使用正则化有两大目标: 抑制过拟合: 将先验知识融入学习过程,比如稀疏 ...
- 洛谷P1776--宝物筛选(单调队列+多重背包)
https://www.luogu.org/problemnew/show/P1776 单调队列+多重背包的讲解https://www.cnblogs.com/JoeFan/p/4165956.htm ...
- 微信接收QQ邮箱e-mail
- JS canvas标签动态绘制图型
使用canvas标签动态绘制图型,当点击鼠标时,以鼠标点击的坐标作为图形中心点.当点击数为偶数时画三角形,当点击数为奇数时画五角星 <!DOCTYPE HTML> <html> ...
- 关于 this 关键字的使用
package com.jsti.guiyang_01; /* 自定义Phone类 this关键字 代表当前正在调用这个方法(访问成员变量)的对象(实例) 1.在setxxx方法中用来区分成员变量和局 ...
- phantomjs的安装和使用链接
1.先下载phantomjs并解压2.将phantomjs的bin目录配置到环境变量中3.测试phantomjs,cmd下输入phantomjs进入 (按 Ctrl + c 组 合键退出和 phant ...
- Tmux会话的使用
不想看废话的直接拖到下面看干货部分! 我们管理Linux服务器通常是通过ssh远程连接过去,如果在服务器上执行比较耗时的操作,比如下载安装软件.编译等等,如果需要数个小时来完成这些工作,但是又不得不关 ...
- Eclipse 中构建 Maven 项目的完整过程 - 动态 Web 项目
进行以下步骤的前提是你已经安装好本地maven库和eclipse中的maven插件了(有的eclipse中已经集成了maven插件) 一.Maven项目的新建 1.鼠标右键---->New--- ...
- 字体图标-把SVG图标转换成所需要的字体图标
小科普: 想必小伙伴们多少都了解或使用过字体图标,总体来说优点多于缺点,优点如下图: 任意缩放,图标不会失真: 可以改变图标颜色: 可以设置图标阴影: 可以设置透明效果: 主流浏览器都支持: 可以快速 ...