管他天下千万事,闲来轻笑两三声
最近要统计每个人的上班工时,于是写了个python脚本自动统计工时并汇总之后通过邮件的方式发到邮箱里。这里总结一下用到的知识点。
urllib2
写过爬虫的应该知道这个库,一句话介绍就是:urllib2提供了一系列用于操作URL的功能。我用这个来获取登录企业微信的token和打卡信息。
get
importurllib2
url='xxx'
response=urllib2.urlopen(url)
printresponse.read()
{
"errcode":,
"errmsg":"ok",
"access_token":"akjfhkaljsdfhlkasjhdfl",
"expires_in":7200
}
可以使用eval将json数据格式转换成python的字典类型,示例代码:
importurllib2
TOKEN_URL='https://gettokenurl'
response=urllib2.urlopen(TOKEN_URL)
printeval(response.read())
'''output
{'access_token': 'dadakjhkj',
'expires_in': 7200,
'errcode': 0, 'errmsg': 'ok'}
'''
post
post麻烦一点,要构造body,header。
importurllib2
importjson
headers= {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}
# 请求的body数据,里面内容根据你的url来确定,这里我是请求打卡数据所有有岂知时间等字段。
formdata= {
"opencheckindatatype":1,
"starttime":start_time,
"endtime":end_time,
"useridlist": []
}
request=urllib2.Request(CHECK_IN_URL,data=json.dumps(formdata),headers=headers)
response=urllib2.urlopen(request)
printeval(response.read())
smtplib,email
能自动获取打卡信息之后,需要做的就是将信息组织一下,然后自动发送邮件给我了。于是就用到了smtplib和email库。示例代码:
importsmtplib
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
# 用于发送邮件的邮箱
me="zhengdf936@163.com"
# 收件人
you='xiaoyu@what.com'
# 邮件标题
subject="邮件标题"
# 构建邮件内容,测试时不要在邮件标题或内容中出现test等字样,会被视为垃圾邮件而发送失败,别问我是怎么知道的
content="This is the content"
# 参数2是邮件content-type, 可以设置html(解析html代码进行显示)等,
msg=MIMEText(content,'text','utf-8')
msg['Subject'] =Header(subject,'utf-8')
msg['From'] =me
msg['To'] =you
server=smtplib.SMTP()
# 邮箱server,163邮箱为smtp.163.com
mail_host='smtp.163.com'
#mail_host = 'smtp-mail.outlook.com' # outlook server
# user必须与msg中发件人一致
mail_user=me
# 邮箱密码
mail_pass='password'
# 连接服务器
server.connect(mail_host,587)
# 使邮箱支持tls
server.ehlo()
server.starttls()
server.ehlo()
# 登录邮箱
server.login(mail_user,mail_pass)
# 发送邮件
server.sendmail(me,address,msg.as_string())
server.quit()
字典排序
之后又准备对数据进行一下排序,于是学习了一下字典的排序。
d= {'d':4,'a':1,'c':3,'b':2}
sorted_d=sorted(d.items(),key=lambdax:x[1])
printsorted_d
'''注意:字典其实是无序的,排序输出的是一个list
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
'''
# 需要倒叙输出时,这样
sorted_d2=sorted(d.items(),key=lambdax:x[1],reverse=True)
printsorted_d2
'''
[('d', 4), ('c', 3), ('b', 2), ('a', 1)]
'''
Ok, so much for this.
If I should meet thee
若我会见到你,
After long years,
事隔经年。
How should I greet thee?--
我何以贺你,
With silence and tears.
以眼泪,以沉默。
——George Gordon Byron
领取专属 10元无门槛券
私享最新 技术干货