Python 实现网页截屏、查库、发邮件
本文介绍了使用 Python(2.7版本)实现网页截屏、查库、发邮件的 demo。用到了 selenium、phantomjs、mailer、jinja2、mysqldb 还有 image,都是比较典型的用法,可复用性比较强。
代码
本 demo 是用于发周报邮件的,周报内容包括数据库中的记录以及网页指定元素的截屏。linux 中可以用 crontab 每周定时发送。需要发类似周报的同学这下轻松了!
直接上代码,使用 Python2.7 版本,关于第三方模块的安装,都很简单,这里就不赘述了。
其中相关数据库参数、邮件参数、网址等真实数据都已做处理掉,提醒加大学习的时候注意替换补全。
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 内容如下:
jinja 变量 row 为字典类型,对应数据库一条记录,索引都是表字段名,注意替换。
每行最后一列都是来自网页截屏的图片,一定要注意此处在 img 标签的 src 属性中用 cid 引入,否则原始 img 标签的引入方式是不生效的!
作者: Lvs
原文链接: http://www.hellolvs.com/selenium/
Python 学习交流qq群:238757010
Python 实现网页截屏、查库、发邮件的更多相关文章
- PhantomJS linux系统下安装步骤及使用方法(网页截屏功能)
PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, ...
- 利用PhantomJS进行网页截屏,完美解决截取高度的问题
关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS ...
- 利用PhantomJS进行网页截屏
利用PhantomJS进行网页截屏 关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种W ...
- php结合phantomjs实现网页截屏、抓取js渲染的页面
首先PhantomJS快速入门 PhantomJS是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, ...
- Java实现网页截屏功能(基于phantomJs)
公司最近有个需求:把用户第一次的测量身体信息和最近一次测量信息进行对比,并且需要把对比的数据截成图片可以发给用户(需要在不打开网页的情况下实时对网页进行截图然后保存到服务器上,返回图片地址),通过网上 ...
- html转图片网页截屏(二)PhantomJS
关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS ...
- 使用PHANTOMJS对网页截屏
PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, ...
- Javascript网页截屏的方法
最近我在研究开发一个火狐插件,具体的功能是将网页内容截屏并分享到微博上.目前基本功能已经实现,大家可以在 @程序师视野 里看到用这个截图插件分享的微博的效果. 之前我曾写过如何将canvas图形转换成 ...
- 简单易用的PIL,教你如何使用python实现自动化截屏
Python有个第三方模块叫做PIL是Python Imaging Library的缩写,是用来进行图像处理的,比如,改变图片颜色,图片缩放,图片裁剪等等基本图片操作.它还包含一个截屏的功能. 从以上 ...
随机推荐
- MySQL-Select语句高级应用
1.1 SELECT高级应用 1.1.1 前期准备工作 本次测试使用的是world数据库,由mysql官方提供下载地址: https://dev.mysql.com/doc/index-other.h ...
- Java爬虫_资源网站爬取实战
对 http://bestcbooks.com/ 这个网站的书籍进行爬取 (爬取资源分享在结尾) 下面是通过一个URL获得其对应网页源码的方法 传入一个 url 返回其源码 (获得源码后,对源码进 ...
- Apache+PHP+MySQL+phpMyAdmin环境搭建
最近在学习web服务端开发,一开始是使用wamp的,后来决定自己完整配置一下环境,并把整个过程记录下来.其中,Apache是服务器,php是用来编写服务端的语言,MySQL作为数据库,phpMyAdm ...
- Weka学习 -- StringToWordVector 源代码学习(1)
代码整个运行流程 參数设置 input数据,设置数据格式 batchFinished(),处理数据(Tokenzier,Stemming,Stopwords) determineDictionary( ...
- git命令的使用
git命令行的使用 0. 工作中常使用的命令行(小结) 假设我们工作共同使用的开发分支为dev,我自己的开发分支为dev_cx.安装git,在工作文件夹下打开git bash. $ git check ...
- J2EE: JCA (Java Connector Architecture) [转]
JCA (J2EE 连接器架构,Java Connector Architecture)是对J2EE标准集的重要补充.因为它注重的是将Java程序连接到非Java程序和软件包中间件的开发.连接器特指基 ...
- 工作随笔——jasypt-spring-boot使用
最近有一个项目,要求对各种配置文件中的数据进行加密.so,let`s do it. Maven依赖 <dependency> <groupId>com.github.ulise ...
- 轨迹系列——Socket总结及实现基于TCP或UDP的809协议方法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在上一篇博客中我详细介绍了809协议的内容.809协议规范了通 ...
- 【java】读取资源文件key->value,java.util.ResourceBundle
package 国际化; import java.util.ResourceBundle; public class TestResource { public static void main(St ...
- 【java】java.util.regex.Pattern和java.util.regex.Matcher简单示例
package 正则; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test_regex ...