使用python(2.7)实现网页截屏、查库、发邮件的demo。用到了selenium、phantomjs、mailer、jinja2、mysqldb还有image,都是比较典型的用法,可复用性比较强,记录一下。
代码
本demo是用于发周报邮件的,周报内容包括数据库中的记录以及网页指定元素的截屏。linux中可以用crontab每周定时发送。需要发类似周报的同学这下轻松了!
直接看代码吧,用的python2.7,关于第三方模块的安装,都很简单,这里就不赘述了。
其中相关数据库参数、邮件参数、网址等真实数据都处理掉了,自己注意替换补全。
1 | #!/usr/bin/python |
fetch_results()读库,返回结果,没啥好说的。
screen_shot(event_id)用于网页截屏,event_id用于传递url参数。使用selenium+phantomjs实现,都是python爬虫很典型的工具。注意其中使用Image截取DOM中id为main的元素的操作。截取后保存到本地。
send_mail(results)自然是发邮件,利用了mailer和jinja2模板,其中env = Environment(loader=PackageLoader(‘jinja’, ‘templates’))这一句是jinja2加载模板的代码,模板位于与此py脚本文件同目录的jinja包下templates目录下的mail.html中。可以看下在mail中嵌入图片和作为附件发送的操作。
mail.html内容如下:
1 |
|
jinja变量row为字典类型,对应数据库一条记录,索引都是表字段名,注意替换。
每行最后一列是来自网页截屏的图片,一定要注意此处在img标签的src属性中用cid引入,否则原始img标签的引入方式是不生效的!