批量下载网页图片常见场景和解决方案

批量下载网页图片到本地

元素捕获

以京东商品搜索页为例,捕获这个页面上的图片相似元素组,捕捉图片时,影刀会提示捕获的是“图像”。

点击“捕获相似元素”捕获另一张图片,得到网页上所有结果图片的相似元素组。

按 F12 检查这些元素的源代码可以发现,图片链接在这个元素的 src 属性中。

可以用指令「获取相似元素列表(web)」的功能“获取元素属性”来批量获取到。

注意:src 属性可能不带 HTTP 的链接前缀,所以需要先拼接后才能正常下载图片。

流程执行逻辑:获取已打开的网页对象 -> 获取当前用户桌面的路径 -> 在已打开的网页对象中批量获取结果图片相似元素的 src 属性的文本,保存在web_element_list中 -> 对web_element_list循环,在当前循环项前拼接https:后用 HTTP 下载指令依次下载到桌面上 111 文件夹中


也可以在网页元素上执行 JavaScript 获取到 src 属性的内容,不需要拼接 https:

JavaScript 代码如下:

function (element, input) {    
    return element.src;
}

如果不只需要结果图片,而是需要下载网页上所有图片,可以先随便捕捉一张图片,然后打开元素编辑,勾选掉所有其他节点,只留最后一级img节点,再次校验元素,可以发现校验到了网页上所有图片元素。


如果只需要一个区域内的所有图片,可以在获取元素时关联父元素。比如只需要“选择颜色”区域中不同颜色商品的小图片,可以在用③获取所有图像元素时关联“选择颜色”这个区域的元素(需要先获取这个父元素的元素对象)。

父元素捕获:

需要先获取父元素的对象。

获取到父元素的对象用来下一步进行关联。


有时可能需要同时获取图片和其他对应信息,这个时候需要“批量数据抓取”指令。详见批量数据抓取指令文档

用批量数据抓取指令抓取图片时,可以直接获取到图片链接。

执行效果

如何获取京东详情页图片链接

问题描述

京东商品详情页的图片有部分无法直接通过获取元素信息得到,图片链接没有出现在src属性或源代码中,而出现在style中。

解决方案:

通过 JavaScript 获取图片链接。

方法一

function (element, input) {
    var url = getComputedStyle(element, null)['background-image'];
    return url.substr(5, url.length-7)
}

方法二

function (element, input) {
style = element.currentStyle || window.getComputedStyle(element, false);

bi = style.backgroundImage.slice(5, -2);

return bi;
}

参数说明

  • 操作目标:选择图片元素

  • web_js_result:图片链接

问题没有解决?去社区提问 all right reserved,powered by Gitbook

results matching ""

    No results matching ""