BeautifulSoup 一行代码获取今日日期,与smtplib结合
在中有一节为通过网络获取今天是不是圣诞节,但是我今天写的时候那个网站登录奇慢,本着求人不如求己,能国内绝不国外的原则,我决定还是自己找个网站爬取日期.
比如
再简单的看了看该网站的代码之后,我最终选择了获取黄色荧光笔标出的那个a标签内容
当然,你也可以获取图中的整个日历内容(蓝色圈部分),通过这种方式,你讲拥有一个完整的”在线日期库”
简单的东西还是直接代码:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
print((BeautifulSoup(urlopen("http://www.baibaidu.com/"),\'lxml\').find(\'h3\').find(\'a\')).text)
好吧似乎有点太简单了=- =只有一行
那再来一遍,顺便再做点处理
html = urlopen("http://www.baibaidu.com/")
bsObj = BeautifulSoup(html,\'lxml\')
data= (bsObj.find(\'h3\').find(\'a\')).text
print(data)
# 获取数字形式的字符串
numData = re.sub(r\'\D\', "", str2)
print(numData)
然后还可以之前写的发送邮件,可以在一起做点不同的事情,比如通过对获取的信息进行一定的出来再将一些内容发送的邮箱,可以是群发(最好是通过打开存储邮箱信息的文件的形式),也可以是单独发送.如果你是用本机或者服务器按时启动这个脚本进行检查,我们将获得一个很酷的小工具.
代码如下
# - * - coding: utf - 8 -*-
#
# 作者:田丰
# 邮箱:fonttian@163.com
# 撰写时间:2017年4月22日
# Python版本:3.6.1
# CSDN:http://blog.csdn.net/fontthrone
#
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import smtplib
import email.mime.multipart
import email.mime.text
msg = email.mime.multipart.MIMEMultipart()
msgFrom = \'fonttian@163.com\'
msgTo = \'marktian1986@163.com\'
smtpSever=\'smtp.163.com\'
smtpPort = \'25\'
sqm=\'将这里替换为你的授权码\' # 在登录smtp时需要login中的密码应当使用授权码而非账户密码
# 获取日期信息
html = urlopen("http://www.baibaidu.com/")
bsObj = BeautifulSoup(html,\'lxml\')
data= (bsObj.find(\'h3\').find(\'a\')).text
dataNumber = re.sub(r\'\D\', "", data)
# 从data中获取数字日期,并做简单的判断,你可以在这里做一些不同寻常的处理
if dataNumber.endswith("921"):
data = data+\'\n 今天是zimo生日\'
trigger=True # 这是示例用的触发器
greeting=\'\'\'亲爱的:
生日快乐,我最爱你的,么么哒.(=- =专业拉仇恨)
\'\'\'
msg[\'from\'] = msgFrom
msg[\'to\'] = msgTo
msg[\'subject\'] = \'Python自动邮件-\'+dataNumber
content = data
txt = email.mime.text.MIMEText(content)
msg.attach(txt)
smtp = smtplib
smtp = smtplib.SMTP()
\'\'\'
smtplib的connect(连接到邮件服务器)、login(登陆验证)、sendmail(发送邮件)
\'\'\'
smtp.connect(smtpSever, smtpPort)
smtp.login(msgFrom, sqm)
smtp.sendmail(msgFrom, msgTo, str(msg))
# 示例:这里利用对网络日期处理做了一些特殊的效果
if trigger=True:
msgFrom=\'xxxxxx@xx.com\'
smtp.sendmail(msgFrom, msgTo, str(greeting))
# s = smtplib.SMTP("localhost")
# s.send_message(msg)
smtp.quit()