抓取浏览器网页

19 浏览
0 Comments

抓取浏览器网页

能否使用JavaScript截取网页的屏幕截图并将其提交给服务器?我对浏览器安全问题不是很担心,因为这个实现是为了HTA而设计的。但是这个可行吗?

0
0 Comments

问题的原因是需要捕获浏览器网页页面,但是无法使用SendKeys函数来执行PrintScreen操作。解决方法之一是使用VB6构建一个ActiveX控件,通过调用keybd_event API来模拟PrintScreen按键操作。以下是用于执行此操作的代码:

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const CaptWindow = 2
Public Sub ScreenGrab()
   keybd_event &H12, 0, 0, 0
   keybd_event &H2C, CaptWindow, 0, 0
   keybd_event &H2C, CaptWindow, &H2, 0
   keybd_event &H12, 0, &H2, 0
End Sub

然而,这段代码只能将窗口内容复制到剪贴板中,并不能直接获取到截图。另一个解决方法是,如果要截图的窗口是HTA(Hypertext Application),可以使用XMLHTTPRequest将DOM节点发送到服务器,并在服务器端生成截图。

其中,HTA是一种在Internet Explorer中运行特权JS应用程序的方式,但在当今已不是非常相关的技术。

0
0 Comments

(Capture Browser Web Page)这个问题的出现的原因是用户想要在网页上截取特定元素的图像,而不是整个页面。解决方法是使用PhantomJS或CasperJS这两个工具来实现。

PhantomJS是一个功能强大的无头浏览器,可以用于自动化测试、截图和页面抓取等任务。用户可以使用PhantomJS的代码片段或者CasperJS框架来生成页面元素的图像。

下面是使用PhantomJS的代码片段来生成页面元素图像的示例:

var page = require('webpage').create();
page.open('http://example.com', function() {
  var clipRect = page.evaluate(function() {
    var element = document.getElementById('elementId');
    var rect = element.getBoundingClientRect();
    return {
      top: rect.top,
      left: rect.left,
      width: rect.width,
      height: rect.height
    };
  });
  page.clipRect = clipRect;
  page.render('element.png');
  phantom.exit();
});

上述代码首先创建了一个PhantomJS页面对象,然后打开了指定的网页。接下来,通过使用页面的evaluate方法,可以在页面上执行JavaScript代码来获取特定元素的位置和尺寸信息。然后,将获取的位置和尺寸信息应用于页面的clipRect属性,以指定要截取的元素范围。最后,调用页面的render方法将指定区域的图像保存为PNG文件。

另一种解决方法是使用CasperJS框架。CasperJS是一个基于PhantomJS的测试和导航工具,它提供了更简单的API来操作页面元素和执行各种操作。下面是使用CasperJS来生成页面元素图像的示例:

var casper = require('casper').create();
casper.start('http://example.com', function() {
  this.captureSelector('element.png', '#elementId');
});
casper.run();

上述代码首先创建了一个CasperJS对象,然后使用start方法打开指定的网页。接下来,使用captureSelector方法来截取指定元素的图像,并将其保存为PNG文件。最后,调用run方法执行脚本。

总结起来,要在网页上截取特定元素的图像,可以使用PhantomJS或CasperJS工具,并根据需要选择合适的API来实现。这些工具提供了方便的方法来自动化浏览器操作和截图任务。

0