gpt4 book ai didi

javascript - 使用 selenium 和 beautifulsoup 从 AJAX 网站上使用 python 抓取图像

转载 作者:行者123 更新时间:2023-12-01 01:18:39 24 4
gpt4 key购买 nike

我花了很长时间尝试浏览 html、javascript、网络流量等,并学习了很多关于 javascript、blob、图像的 base64 解码/编码的知识,但我似乎仍然不知道如何实现从该网站提取这些视频中的图像:https://www.jamesallen.com/loose-diamonds/all-diamonds/

这是我所知道的:每个视频实际上是一组最多 512 个图像,这些图像是通过标题为 setX.bin(X 是数字)的文件从服务器检索的。然后它们通过 int 数组解析为 blob 对象(还有一些 base64 但我忘了在哪里),以某种方式转换为图像。

遵循源代码非常困难,因为它是故意写成意大利面条代码的。

如何高效地提取每颗钻石的图像?

我的一个解决方案是:

我可以非常轻松地获取 setX.bin 文件,如果我只是以某种方式将它们“传递”到 javascript 函数中,那么我应该会很好。

我的第二个解决方案是:

手动旋转每个钻石并从缓存或类似的东西中提取图像。

我想使用 python 来做到这一点。

编辑:我在 SO 上发现了 javascript,它确实给出了“SecurityError:操作不安全”。这是:

function exportCanvasAsPNG(id, fileName) {

var canvasElement = document.getElementById(id);
canvasElement.crossOrigin = "anonymous";
var MIME_TYPE = "image/png";

var imgURL = canvasElement.toDataURL(MIME_TYPE);
window.console.log(canvasElement);
var dlLink = document.createElement('a');
dlLink.download = fileName;
dlLink.href = imgURL;
dlLink.dataset.downloadurl = [MIME_TYPE, dlLink.download, dlLink.href].join(':');

document.body.appendChild(dlLink);
dlLink.click();
document.body.removeChild(dlLink);
}

exportCanvasAsPNG("canvas-key-_w5qzvdqpl",'asdf.png');

我从 Firefox 控制台运行它。当我在 python 中运行类似的执行脚本时,我遇到了同样的问题。

我希望能够为每个 Canvas 抓取所有 360 度图像。

Edit2:为了使这个问题更简单,我知道如何获取setX.bin文件,但我不知道如何将这个图像集合从bin转换为jpg。每个bin文件是多个jpg文件。

最佳答案

.bin 文件似乎只包含与一些主要元数据连接在一起的 jpeg。您可以简单地遍历文件的字节来查找 jpeg 文件签名 (0xFFD8) 并切出每个图像:

JPEG_MAGIC = b"\xff\xd8"

with open("set0.bin", "rb") as f:
s = f.read()

i = 0
start_index = s.find(JPEG_MAGIC)

while True:
end_index = s.find(JPEG_MAGIC, start_index + 1)

if end_index == -1:
end_index = len(s)

with open(f"out{i:03}.jpg", "wb") as out:
out.write(s[start_index:end_index])

if end_index == len(s):
break

start_index = end_index

i += 1

结果:

enter image description here

关于javascript - 使用 selenium 和 beautifulsoup 从 AJAX 网站上使用 python 抓取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54473667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com