selenium+pillow实现网站定点截图并插入邮件发送

来源:互联网 发布:复旦大学软件学院 编辑:程序博客网 时间:2024/06/16 09:22
#coding: utf-8
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import time,os
import selenium.webdriver
from PIL import Image

#打开目标地址
driver=selenium.webdriver.Firefox()
driver.get("http://www.51testing.com/html/index.html")

#找到目标元素
photo=driver.find_element_by_xpath(".//*[@id='pagetitle']/div[1]/a/img")
time.sleep(3)
#获取元素所处的位置,以x,y标识元素左上定点的位置
location=photo.location
print (location)
#获取元素的高和宽,以height标识高,以width标识宽
size=photo.size
print (size)
#截取全屏图像并保存到本地路径
driver.save_screenshot("photo.png")
#打开所截取的图像
im = Image.open("photo.png")
#定义二次截图的位置及大小
left=location['x']
top=location['y']
right=left+size['width']
bottom=location['y']+size["height"]
#二次截图并替换原图像
im = im.crop((left,top,right,bottom))
im.save("photo.png")
driver.close()

#定义邮件正文内容,由一个html文档构成
def mailWrite():
    #以img标签标识正文区html中的图像
    head='<html><body><img src='
    #以cid标注文件在附件中可以找到,如不写,邮件将不会在附件中查找该文件,则会出现不显示图像的情况
    body='cid:photo'
    tail="></img></body></html>"   
    #将内容拼接成完整的HTML文档
    mail=head+body+tail
    return mail

#发送邮件
def mailSend(mail):
    sender = '***@***.net'
#设置接收人
    receiver = '***@***.net'
#设置邮件主题
    subject = 'Test mail,ignore please!'
#设置发件服务器,即smtp服务器
    smtpserver = 'smtp.***.net'
#设置登陆名称
    username = '***@***.net'
#设置登陆密码
    password = '******'
#创建MIMEMultipart对象,采用related定义内嵌资源的邮件体
    msg = MIMEMultipart('related')
#输入邮件主题
    msg['Subject'] = subject
#将html文档内容插入邮件正文区
    msgText = MIMEText(mail,'html','utf-8')
    msg.attach(msgText)
#以二进制形式打开图片文件,并插入附件区,以备正文区检索本地文件而正确显示在正文区
    fp = open('photo.png', 'rb')
    msgImage = MIMEImage(fp.read())
    fp.close()
    msgImage.add_header('Content-ID','photo')
    msg.attach(msgImage)
#调用邮件发送方法
    smtp = smtplib.SMTP()
#设置连接发件服务器
    smtp.connect('smtp.***.net')
#输入用户名,密码,登陆服务器
    smtp.login(username, password)
#发送邮件
    smtp.sendmail(sender, receiver, msg.as_string())
#退出登陆并关闭与发件服务器的连接
    smtp.quit()
   
#入口函数,配置文件地址和文件名
def main():
    mail=mailWrite()
    mailSend(mail)
    print("mailed")

#调用执行main函数
if __name__=="__main__":
    main()
0 0
原创粉丝点击