通过脚本下载具有特定Div的图像

时间:2016-04-13 08:30:53

标签: node.js bash perl scripting automation

我有一系列网址,我需要从每个网址下载单个图片。

在每个页面的标记中都有以下内容

<div class="subcolumns product-hero">
        <div class="c60l">
                <img src="Cubes.png" width="300"/> 
        </div>
</div>

我需要理想地使用product-hero类下载div中的图像,或者保存图像src标记。

这是通过某种自动化脚本实现的吗? Node / Perl等?

2 个答案:

答案 0 :(得分:0)

我会考虑使用Phantom.js,它允许您在纯JavaScript中加载和查询网页(无需浏览器)。

查看Phantom's DOM Manipulation有关如何访问文档的信息,然后您可以使用vanilla javascript dom查询(例如getElementsByClassNamegetElementsByTagName)来访问您需要的图像。所以你的脚本可能如下所示:

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('http://www.httpuseragent.org', function (status) {
    if (status !== 'success') {
        console.log('Unable to access network');
    } else {
        page.evaluate(function () {
            var productHeros = document.getElementsByClassName('product-hero');
            for (var i = 0; i < productHeros.length; i++) {
                var productHeroDiv = productHeros[i];
                var image = productHeroDiv.getElementsByTagName("img")[0];
                var source = image.src;
            }
        });
        console.log(ua);
    }
    phantom.exit();
});

答案 1 :(得分:0)

给定URL列表作为参数列表:

#!/bin/bash
for url in "$@"; do
    img_src=$( curl -s "$url" | \
        xmllint 2>/dev/null --recover --html --xpath \
        'string(//div[contains(@class, 'product-hero')]/img/@src)' - )
    curl -O "$(dirname "$url")/$img_src"
done