|
@@ -13,8 +13,8 @@
|
|
|
<el-submenu index="a">
|
|
|
<template slot="title"><i class="el-icon-picture"></i>图片下载</template>
|
|
|
<el-menu-item index="1">阿里巴巴</el-menu-item>
|
|
|
- <el-menu-item index="2">抖音</el-menu-item>
|
|
|
- <el-menu-item index="3">其他网址</el-menu-item>
|
|
|
+ <el-menu-item index="2">京东</el-menu-item>
|
|
|
+ <el-menu-item index="10">其他网址</el-menu-item>
|
|
|
</el-submenu>
|
|
|
|
|
|
<el-submenu index="b">
|
|
@@ -35,6 +35,7 @@
|
|
|
<div class="content-top" style="padding: 10px 20px;">
|
|
|
<h3>
|
|
|
<span v-if="menuIndex == '1'">阿里巴巴 - </span>
|
|
|
+ <span v-if="menuIndex == '2'">京东 - </span>
|
|
|
图片下载
|
|
|
</h3>
|
|
|
|
|
@@ -75,13 +76,16 @@
|
|
|
|
|
|
<!-- 阿里巴巴 -->
|
|
|
<template v-if="menuIndex == '1'">
|
|
|
- <el-checkbox :value="true" disabled>下载主图</el-checkbox>
|
|
|
+ <el-checkbox :value="true" style="opacity: 0.6; cursor: not-allowed;">下载主图</el-checkbox>
|
|
|
<el-checkbox v-model="settingData.detailImg" >下载详情图</el-checkbox>
|
|
|
<el-checkbox v-model="settingData.skuImg" >下载SKU图</el-checkbox>
|
|
|
<!-- <el-checkbox v-model="settingData.commentImg" >下载评论图</el-checkbox> -->
|
|
|
<el-checkbox v-model="settingData.video" >下载视频</el-checkbox>
|
|
|
</template>
|
|
|
|
|
|
+ <template v-if="menuIndex == '2'">
|
|
|
+ <el-button size="small" type="info" @click="accountLogin()" >检测登录状态</el-button>
|
|
|
+ </template>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
@@ -142,6 +146,7 @@
|
|
|
imgSrc: '',
|
|
|
menuIndex: '1',
|
|
|
url: '',
|
|
|
+ jdBrowser: '', // 打开京东的浏览器
|
|
|
settingData: {
|
|
|
detailImg: true,
|
|
|
skuImg: true,
|
|
@@ -317,10 +322,10 @@
|
|
|
case '1': // 阿里巴巴
|
|
|
this.alibabaDownload();
|
|
|
break;
|
|
|
- case '2': //
|
|
|
-
|
|
|
+ case '2': // 京东
|
|
|
+ this.jdDownload();
|
|
|
break;
|
|
|
- case '3': // 其他网址
|
|
|
+ case '10': // 其他网址
|
|
|
this.normalDownload();
|
|
|
break;
|
|
|
}
|
|
@@ -406,13 +411,13 @@
|
|
|
behavior: "smooth"
|
|
|
});
|
|
|
}, start);
|
|
|
- if(start > num){
|
|
|
+ if(start > num || start > 500){ // 防止页面过长,滚动500次自动停止
|
|
|
clearInterval(scrollInt);
|
|
|
await browser.close();
|
|
|
this.activities.push({id: 3, content: '图片下载完成',type: 'success'});
|
|
|
this.loading = false;
|
|
|
}
|
|
|
- }, 1000);
|
|
|
+ }, 500);
|
|
|
|
|
|
}catch(e){
|
|
|
this.showError(e);
|
|
@@ -451,7 +456,7 @@
|
|
|
behavior: "smooth"
|
|
|
});
|
|
|
}, start);
|
|
|
- if(start > num){
|
|
|
+ if(start > num || start > 500){ // 防止页面过长,滚动500次自动停止
|
|
|
clearInterval(scrollInt);
|
|
|
await this.scanImg(browser, page);
|
|
|
this.loading = false;
|
|
@@ -465,6 +470,92 @@
|
|
|
})();
|
|
|
},
|
|
|
|
|
|
+ // 账号登录
|
|
|
+ accountLogin(type){
|
|
|
+ (async () => {
|
|
|
+ try{
|
|
|
+ if(!this.jdBrowser){
|
|
|
+ this.jdBrowser = await puppeteer.launch({ headless: false });
|
|
|
+ }
|
|
|
+ const page = await this.jdBrowser.newPage();
|
|
|
+ await page.setViewport({ width: 1280, height: 800 });
|
|
|
+
|
|
|
+ page.on('response', async(response) => {
|
|
|
+ // 检查响应的 MIME 类型是否以 'image/' 开头
|
|
|
+ if (response.headers()['content-type'] && response.headers()['content-type'].startsWith('application/json')) {
|
|
|
+
|
|
|
+ console.log(response.url(), response.headers()['content-type']);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ //await page.setJavaScriptEnabled(false);
|
|
|
+ // await page.goto('https://www.jd.com/', {waitUntil : 'networkidle2'});
|
|
|
+ await page.goto('https://item.jd.com/10056666299521.html', {waitUntil : 'networkidle2'});
|
|
|
+
|
|
|
+ page.on('request', request => {
|
|
|
+ console.log(request);
|
|
|
+ // 检查请求的 URL 是否符合可能导致跳转的条件
|
|
|
+ // if (/* 某些条件,比如 URL 包含特定字符串 */) {
|
|
|
+ // request.abort(); // 取消请求
|
|
|
+ // } else {
|
|
|
+ // request.continue(); // 允许请求继续
|
|
|
+ // }
|
|
|
+ });
|
|
|
+ await page.setRequestInterception(true);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ let loginResult = await page.evaluate(() => {
|
|
|
+ if(document.querySelector('.link-login')){
|
|
|
+ document.querySelector('.link-login').click();
|
|
|
+ return false;
|
|
|
+ }else{
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if(loginResult){ // 登录成功
|
|
|
+ //const cookies = await page.cookies('https://www.jd.com/');
|
|
|
+ //await page.setViewport({ width: 1, height: 1 });
|
|
|
+ console.log('登录成功');
|
|
|
+ }else{ //登录失败
|
|
|
+ console.log('登录失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ // let scrollHeight = pageInfo.scrollHeight;
|
|
|
+ // let cHeight = pageInfo.cHeight;
|
|
|
+
|
|
|
+ // let num = Math.ceil(scrollHeight / cHeight);
|
|
|
+ // let start = -1;
|
|
|
+ // let scrollInt = setInterval(async() => {
|
|
|
+ // start ++;
|
|
|
+ // await page.evaluate((start) => {
|
|
|
+ // let cHeight = document.documentElement.clientHeight;
|
|
|
+ // window.scrollTo({
|
|
|
+ // top: cHeight * start,
|
|
|
+ // behavior: "smooth"
|
|
|
+ // });
|
|
|
+ // }, start);
|
|
|
+ // if(start > num || start > 500){ // 防止页面过长,滚动500次自动停止
|
|
|
+ // clearInterval(scrollInt);
|
|
|
+ // await this.scanImg(this.jdBrowser, page);
|
|
|
+ // this.loading = false;
|
|
|
+ // }
|
|
|
+ // }, 500);
|
|
|
+
|
|
|
+
|
|
|
+ }catch(e){
|
|
|
+ this.showError(e);
|
|
|
+ }
|
|
|
+ })();
|
|
|
+ },
|
|
|
+
|
|
|
+ // 京东下载
|
|
|
+ jdDownload(){
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
|
|
|
// 扫描并下载图片
|
|
|
async scanImg(browser, page){
|