基于phantomjs与robot对网页截屏

在爬虫开发过程中,或者其他方面有时候会有这种需求,截取网页图片,作为一种快照信息进行存储,在最近开发过程中也刚好碰到了这种需求,需要将爬虫过程中的网页进行快照信息保存,因此查看了一部分文档,现提供以下两种方式进行快照截图。


Python版本

python需要安装selenium,通过pip方式便可安装,期中下面有三种方式:

1. 调用Chrome或者FireFox浏览器方式,这种都需要打开本地一个无头浏览器,而这个浏览器需要自己单独下载,否则会报异常,网上例子很多,不再描述,下载后放置与python.exe同级目录便可运行,这两种方式都只能截取浏览器部分截图,如果该页面有滚动条,那么下面页面是无法截取到的。

2. 调用PhantomJS方式,这种就是解决滚动截屏问题,可以自动将当前浏览器页面全部内容截取,并且不打开浏览器,不用额外安装其他东西,至于其他带cookie,post,get不同请求请查阅其他资料。

from selenium import webdriver

# 使用PhantomJS获取浏览器截图,会截取整个网页信息,包含滚动条以下部分
br = webdriver.PhantomJS()
br.maximize_window()
br.get("http://www.baidu.com")
br.save_screenshot("./baidu01.png")

# 使用chrome浏览器获取浏览器截图,只会截取展现部分
br = webdriver.Chrome()
br.maximize_window()
br.get("http://www.baidu.com")
br.save_screenshot("./baidu02.png")

# 使用Firefox浏览器获取浏览器截图,只会截取展现部分
br = webdriver.Firefox()
br.maximize_window()
br.get("http://www.baidu.com")
br.save_screenshot("./baidu03.png")

JAVA版本

Java主要两种方式:

一种是Robot方式,这种截图不但可以截图,还可以实现一起操控类,截图只是它一个小功能,例子中也只是简单打开浏览器,截取当前显示部分,然后保存成图片,关闭浏览器,因此对于存在滚动条的,无法全部截取,因为要模拟操控滚动条,形成一个输入流,循环读取,显得太过于麻烦,不太通用。不过Robot最主要的并不是截图,而是操控,没准需要固定点击的可以用该方式模拟操作呢。

public class CutPicture {
    /**
     * 图像截取并保存
     * @param url: 请求链接
     * @throws MalformedURLException
     * @throws IOException
     * @throws URISyntaxException
     * @throws AWTException
     */
    public static void saveHtmlImg(String url) throws IOException, URISyntaxException, AWTException {
        Desktop.getDesktop().browse(new URL(url).toURI());
        Robot robot = new Robot();
        robot.delay(2000);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值