侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

Python  /  管理员 发布于 7年前   226

小工具

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

Baidu统计API的使用

系统环境:

Python2

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

getSiteList的使用

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

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

# encoding=utf-8import requestsimport jsonsiteListUrl = "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 MIMETextfrom email.header import Headerfrom 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-8import timeimport requestsimport jsonfrom email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSL# 获得时间 格式为:【20190125】nowTime = time.strftime("%Y%m%d", time.localtime())# 发送方的QQsendQQ = "xxx"# 接收方的邮件地址receiveMail = "xxx"# 百度统计tokentoken = "xxx"# 需要查询的网站idsiteId = 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_uvdef 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使用正则筛选信用卡
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客