0

我正在搜索谷歌以获取任何可以捕获任何网站或 URL 图像的 js lib。我开始知道 phantomjs 库可以做到这一点。在这里,我有一个小代码,它捕获并将 github 主页转换为 png 图像

如果有人熟悉 phantomjs 那么请告诉我这一行的含义是什么

var page = require('webpage').create();

在这里我可以给出任何名称而不是网页吗?

如果我需要捕获任何网页的一部分,那么我该如何在这个库的帮助下做到这一点。任何人都可以指导我。

var page = require('webpage').create();
page.open('http://github.com/', function () {
    page.render('github.png');
    phantom.exit();
});

https://github.com/ariya/phantomjs/wiki

谢谢

4

2 回答 2

1

这是一个用于抓取图像的简单 phantomjs 脚本:

var page = require('webpage').create(),
system = require('system'),
address, output, size;


address = "http://google.com";
output = "your_image.png";
page.viewportSize = { width: 900, height: 600 };

page.open(address, function (status) {
    if (status !== 'success') {
        console.log('Unable to load the address!');
        phantom.exit();
    } else {
        window.setTimeout(function () {
            page.render(output);
            console.log('done');
            phantom.exit();
        }, 10000);
    }
})

在哪里..

'address' 是您的网址字符串。

'output' 是您的文件名字符串。

此外,“宽度”和“高度”是要捕获的网站区域的尺寸(如果您想要整个页面,请将其注释掉)

要从命令行运行它,将上面的内容保存为 'script_name.js 并触发幻象,使 js 文件成为第一个参数。

希望这可以帮助 :)

于 2013-04-14T22:44:01.580 回答
1

你问的那一行:

var page = require('webpage').create();

据我所知,该行做了 3 件事:它添加了一个模块require('webpage'),然后在 PhantomJS 中创建一个 WebPage 对象.create(),然后将该对象分配给var = page

名称“网页”告诉它要添加哪个模块。

http://phantomjs.org/api/webpage/

我也需要一种方法来page.render()捕获网页的一个部分,但我没有看到一种简单的方法来做到这一点。最好通过 ID 选择一个页面元素,然后根据它的大小呈现该元素。他们真的应该为下一个版本的 PhantomJS 添加它。

目前,我唯一的解决方法是在我的 URL 中添加一个锚标记,http://example.com/page.html#element以使页面滚动到我想要的元素,然后设置一个接近我需要的大小的宽度和高度。

我最近发现我可以在渲染之前对页面进行一些操作,所以我想尝试使用这种技术来隐藏除我想要捕获的元素之外的所有其他元素。我还没有尝试过,但也许我会取得一些成功。请参阅此页面并查看它们的使用方式querySelector()https ://github.com/ariya/phantomjs/blob/master/examples/technews.js

于 2013-08-06T18:06:34.037 回答