【问题标题】:Web-scraping: some data (image) seems unavailable for scraping?网络抓取:某些数据(图像)似乎无法抓取?
【发布时间】:2018-07-04 14:40:27
【问题描述】:

我正在尝试使用 Python、Selenium 和 Firefox 从网站获取图像 URL,但我似乎面临这种情况,但这是不可能的?没有元素,但显示图像。当我在 Firefox 中使用“检查”时,它会建议以下图像元素,但是我在其中看不到任何有关图像源的信息:

<canvas width="575" height="575" id="orbitvu-2154214-obj-canvas" class="orbitvu-viewer-object-canvas zindexer" style="margin: 0px; padding: 0px; box-sizing: border-box; line-height: 0; width: 100%; height: 100%; display: block; background-color: rgb(255, 255, 255); opacity: 1;"></canvas>

我还可以看到,firefox 在下载网站时会下载图像,并且图像下载是由网站中嵌入的 js 脚本触发的。所以我假设这个脚本在这里做了一些魔法——它下载图像并以某种方式让浏览器显示它,而最终的 HTML 源代码中没有任何东西可用于识别图像源位置。 我想知道是否存在根本无法抓取日期的情况,也许这就是其中之一?

【问题讨论】:

    标签: javascript python html selenium web-scraping


    【解决方案1】:

    那不是图片,那是画布元素。画布用于在网页上绘制图形,您可以在画布上绘制图像,但这很可能是您的困惑所在。图片很可能是流下来的,然后 JavaScript 将其绘制到画布上,查看他们的 JavaScript 源代码以了解更多信息,或者链接我们的 url 以便我们查看

    【讨论】:

    • 我认为是以下脚本在该画布上绘制图像:scorett.se//M1/stage/scripts/orbit/orbitvu.js 脚本执行的结果没有反映在我从浏览器获取的最终 HTML 中,这有点奇怪?跨度>
    • document.getElementById(canvasId).toDataURL(); 之类的东西应该允许您将整个画布下载为图像。
    • 但是当我查看“查看页面源”时,为什么画布中没有图像数据?可能我在这里遗漏了一些基本的东西(我离 Web 开发还很远),但是我期望在所有脚本执行后看到源代码中的所有内容是错误的吗?
    • 图像数据存在于画布中,您不会在页面源代码中看到它,尽管它是使用 javascript 绘制的
    • 我认为浏览器运行 javascript 并且 javascript 最终生成 html?另外,我在图片上右击可以下载图片,但是为什么在页面源中找不到它的URL?浏览器不知何故知道图像 URL 而无需执行 javascript?
    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多