代码拉取完成,页面将自动刷新
同步操作将从 hubzy/link 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
const puppeteer = require('puppeteer');
const fs = require('fs');
const request = require('request');
const path = require('path');
// 爬取 蘑菇街 童装图片数据
(async () => {
let browser = await puppeteer.launch();
let page = await browser.newPage();
await page.goto('https://list.mogu.com/search/goods?q=裙子');
let items = await page.$$eval('a.pin-box', el => el.map(x => x.getAttribute("href"))); // 获取列表 a 链接 href
// 轮训获取图片
for (let item of items) {
await page.goto(item);
let title = await page.$('span.title');
let name = await (await title.getProperty('innerText')).jsonValue(); // 获取商品名称
let images = await page.$$eval('li.img>img', el => el.map(x => x.getAttribute('src'))); // 展示图片
let detailImg = await page.$$eval('img.lazy', el => el.map(x => x.getAttribute('data-original'))); // 详情图片
mkdirSync(`./mproduct/${name}/images/`); // 存放目录
mkdirSync(`./mproduct/${name}/detailImg/`); // 存放目录
for (i of images) {
let src = i.replace(/_100x100.jpg/, '');
await downloadImg(src, './mproduct/' + name + '/images/' + new Date().getTime() + '.jpg');
}
for (m of detailImg) {
await downloadImg(m, './mproduct/' + name + '/detailImg/' + new Date().getTime() + '.jpg');
//await request(m).pipe(fs.createWriteStream('./product/' + name + '/detailImg/' + new Date().getTime() + '.jpg'));
}
}
// 关闭
await browser.close();
})();
// 同步创建目录
function mkdirSync(dirname) {
if (fs.existsSync(dirname)) {
return true;
} else {
if (mkdirSync(path.dirname(dirname))) {
fs.mkdirSync(dirname);
return true;
}
}
return false
}
// 下载文件 保存图片
async function downloadImg(src, path) {
return new Promise(async function (resolve, reject) {
let writeStream = fs.createWriteStream(path);
let readStream = await request(src);
await readStream.pipe(writeStream);
// readStream.on('end', function () {
// console.log('文件下载成功');
// });
readStream.on('error', function () {
console.log("错误信息:" + err)
})
writeStream.on("finish", function () {
console.log("文件写入成功");
writeStream.end();
resolve();
});
})
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。