我有一系列网址,我需要从每个网址下载单个图片。
在每个页面的标记中都有以下内容
<div class="subcolumns product-hero">
<div class="c60l">
<img src="Cubes.png" width="300"/>
</div>
</div>
我需要理想地使用product-hero类下载div中的图像,或者保存图像src标记。
这是通过某种自动化脚本实现的吗? Node / Perl等?
答案 0 :(得分:0)
我会考虑使用Phantom.js,它允许您在纯JavaScript中加载和查询网页(无需浏览器)。
查看Phantom's DOM Manipulation有关如何访问文档的信息,然后您可以使用vanilla javascript dom查询(例如getElementsByClassName
和getElementsByTagName
)来访问您需要的图像。所以你的脚本可能如下所示:
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