【问题标题】:Get image URL from HTML5 canvas using Selenium Python使用 Selenium Python 从 HTML5 画布获取图像 URL
【发布时间】:2017-11-13 17:52:08
【问题描述】:
<canvas class="word-cloud-canvas" id="word-cloud-canvas-1892" height="270" width="320"></canvas>

如何使用 Selenium Python 从 HTML5 画布中获取图像的 URL 源?

我尝试使用

driver.execute_script("return arguments[0].toDataURL('image/png');", canvasElement)

但它只返回二进制文件?的图像。 我不想保存图像,而是获取图像的 URL。有可能吗?

【问题讨论】:

  • 您能否说明其他选项(除了 selenium)是否可以接受,如果可以,请查看提供的解决方案?

标签: python html selenium html5-canvas


【解决方案1】:

我遇到了类似的问题,我能找到的唯一选择是使用 subprocessphantomjs

这是 Python 代码

import json, subprocess
output = check_output(['phantomjs', 'getResources.js', main_url])
urls = json.loads(output)
for url in urls:
    #filter and process URLs

以及Javascript文件内容

// getResources.js
// Usage: 
// phantomjs getResources.js your_url

var page = require('webpage').create();
var system = require('system');
var urls = Array();

page.onResourceRequested = function(request, networkRequest) {
    urls.push(request.url)
};

page.onLoadFinished = function(status) {
    setTimeout(function() {
        console.log(JSON.stringify(urls));
        phantom.exit();
    }, 16000);
};

page.onResourceError = function() {
    return false;
}
page.onError = function() {
    return false;
}

page.open(system.args[1]);

PhantomJS 也支持各种选项;例如要更改用户代理,您可以使用以下内容:

page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) ...';

这是我用于问题的this answer 的简化版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2019-05-11
    • 1970-01-01
    • 2014-04-05
    • 2014-01-31
    • 2011-12-26
    相关资源
    最近更新 更多