Python中使⽤Selenium实现⽹页截图实例
Selenium 是⼀个可以让浏览器⾃动化地执⾏⼀系列任务的⼯具,常⽤于⾃动化测试。不过,也可以⽤来给⽹页截图。⽬前,它⽀持 Java、C#、Ruby 以及 Python 四种客户端语⾔。如果你使⽤ Python,则只需要在命令⾏⾥输⼊“sudo easy_install selenium”并回车,即可安装 selenium 的 Python 版本的客户端⽀持。
以 Python 为例,我们可以使⽤下⾯的脚本来给指定页⾯(⽐如⾸页)截图:
# -*- coding: utf-8 -*-
#
# author: oldj <oldj.wu@gmail>
#
from selenium import webdriver
import time
def capture(url, save_fn="capture.png"):
browser = webdriver.Firefox() # Get local session of firefox
browser.set_window_size(1200, 900)
<(url) # Load page
(function () {
var y = 0;
var step = 100;
window.scroll(0, 0);
function f() {
if (y < document.body.scrollHeight) {
y += step;
window.scroll(0, y);
setTimeout(f, 50);
} else {
window.scroll(0, 0);
document.title += "scroll-done";
}
}
setTimeout(f, 1000);
})();
""")
for i in xrange(30):
if "scroll-done" in browser.title:
break
time.sleep(1)
browser.save_screenshot(save_fn)
browser.close()
if __name__ == "__main__":
capture("www.jb51")
注意到,上⾯的代码中,我并没有在打开页⾯后⽴即截图,⽽是先在页⾯上执⾏了⼀段 JavaScript 脚本,先将页⾯的滚动条拖到最下⽅,再拖回顶部,然后才截图。这样的好处是如果页⾯下⽅有⼀些延迟加载的内容,在这个操作之后⼀般也都已加载了。
与 PageSaver 等浏览器插件相⽐,Selenium 功能更为强⼤,例如,它可以在页⾯上注⼊并执⾏⼀段
JS,还可以模拟⿏标点击等⾏为,⽽且可以同时运⾏多个实例(多个线程同时截图)。这样看来,使⽤ Selenium 来给页⾯截图似乎是⼀个不错的选择。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论