|
@@ -376,7 +376,7 @@
|
|
],
|
|
],
|
|
url: [
|
|
url: [
|
|
{ required: true, message: '请输入网页链接', trigger: 'blur' },
|
|
{ required: true, message: '请输入网页链接', trigger: 'blur' },
|
|
- { pattern: /^(http|https):\/\/.+$/, message: '请输入正确的网址链接(http://或https://开头)', trigger: 'blur' }
|
|
|
|
|
|
+ { pattern: /^(http|https):\/\/.+$/, message: '请输入正确的网址链接(http://或https://开头),结尾不能有换行符', trigger: 'blur' }
|
|
],
|
|
],
|
|
},
|
|
},
|
|
tabLoading: false,
|
|
tabLoading: false,
|
|
@@ -771,6 +771,10 @@
|
|
const newProto = navigator.__proto__;
|
|
const newProto = navigator.__proto__;
|
|
delete newProto.webdriver;
|
|
delete newProto.webdriver;
|
|
navigator.__proto__ = newProto;
|
|
navigator.__proto__ = newProto;
|
|
|
|
+
|
|
|
|
+ window.navigator.chrome = {
|
|
|
|
+ runtime: {}
|
|
|
|
+ };
|
|
});
|
|
});
|
|
await page.goto(url, {waitUntil : 'networkidle2'});
|
|
await page.goto(url, {waitUntil : 'networkidle2'});
|
|
}catch(e){
|
|
}catch(e){
|
|
@@ -1395,6 +1399,10 @@
|
|
const newProto = navigator.__proto__;
|
|
const newProto = navigator.__proto__;
|
|
delete newProto.webdriver;
|
|
delete newProto.webdriver;
|
|
navigator.__proto__ = newProto;
|
|
navigator.__proto__ = newProto;
|
|
|
|
+
|
|
|
|
+ window.navigator.chrome = {
|
|
|
|
+ runtime: {}
|
|
|
|
+ };
|
|
});
|
|
});
|
|
|
|
|
|
let jdImgInfo = {
|
|
let jdImgInfo = {
|
|
@@ -1520,7 +1528,6 @@
|
|
});
|
|
});
|
|
await page.goto(urlInfo.url, {waitUntil : 'networkidle2'});
|
|
await page.goto(urlInfo.url, {waitUntil : 'networkidle2'});
|
|
|
|
|
|
-
|
|
|
|
let pageInfo = await page.evaluate(() => {
|
|
let pageInfo = await page.evaluate(() => {
|
|
let cHeight = document.documentElement.clientHeight;
|
|
let cHeight = document.documentElement.clientHeight;
|
|
let scrollHeight = document.body.scrollHeight;
|
|
let scrollHeight = document.body.scrollHeight;
|
|
@@ -1564,6 +1571,7 @@
|
|
let outObj = {
|
|
let outObj = {
|
|
mainImg: [],
|
|
mainImg: [],
|
|
skuImg: [],
|
|
skuImg: [],
|
|
|
|
+ detailImg: []
|
|
};
|
|
};
|
|
//主图
|
|
//主图
|
|
let arr1 = document.querySelectorAll('#spec-list img');
|
|
let arr1 = document.querySelectorAll('#spec-list img');
|
|
@@ -1572,9 +1580,9 @@
|
|
let reg = /\/n[0-9]+\/jfs\//;
|
|
let reg = /\/n[0-9]+\/jfs\//;
|
|
let reg2 = /\/n[0-9]+\/s([0-9]+)x([0-9]+)_jfs\//;
|
|
let reg2 = /\/n[0-9]+\/s([0-9]+)x([0-9]+)_jfs\//;
|
|
let reg3 = /![a-z]+_[0-9]+x[0-9]+(.avif)?/;
|
|
let reg3 = /![a-z]+_[0-9]+x[0-9]+(.avif)?/;
|
|
- let replaceStr = '/n1/s800x800_jfs/';
|
|
|
|
|
|
+ let replaceStr = '/n5/s800x800_jfs/';
|
|
if(mainImgUrl.match(/\/n[0-9]+\/s50x66_jfs\//)){
|
|
if(mainImgUrl.match(/\/n[0-9]+\/s50x66_jfs\//)){
|
|
- replaceStr = '/n1/s750x1000_jfs/';
|
|
|
|
|
|
+ replaceStr = '/n5/s750x1000_jfs/';
|
|
}
|
|
}
|
|
mainImgUrl = mainImgUrl.replace(reg, replaceStr).replace(reg2, replaceStr).replace(reg3, '').replace('.avif', '');
|
|
mainImgUrl = mainImgUrl.replace(reg, replaceStr).replace(reg2, replaceStr).replace(reg3, '').replace('.avif', '');
|
|
|
|
|
|
@@ -1590,9 +1598,9 @@
|
|
for(let i=0; i< arr2.length; i++){
|
|
for(let i=0; i< arr2.length; i++){
|
|
let skuImgUrl = arr2[i].src;
|
|
let skuImgUrl = arr2[i].src;
|
|
let skuReg = /\/n[0-9]+\/s([0-9]+)x([0-9]+)_jfs\//;
|
|
let skuReg = /\/n[0-9]+\/s([0-9]+)x([0-9]+)_jfs\//;
|
|
- let replaceStr = '/n1/s800x800_jfs/';
|
|
|
|
|
|
+ let replaceStr = '/n5/s800x800_jfs/';
|
|
if(skuImgUrl.match(/\/n[0-9]+\/s60x80_jfs\//)){
|
|
if(skuImgUrl.match(/\/n[0-9]+\/s60x80_jfs\//)){
|
|
- replaceStr = '/n1/s750x1000_jfs/';
|
|
|
|
|
|
+ replaceStr = '/n5/s750x1000_jfs/';
|
|
}
|
|
}
|
|
skuImgUrl = skuImgUrl.replace(skuReg, replaceStr).replace('.avif', '');
|
|
skuImgUrl = skuImgUrl.replace(skuReg, replaceStr).replace('.avif', '');
|
|
if(!authority && i < execNum){
|
|
if(!authority && i < execNum){
|
|
@@ -1601,7 +1609,19 @@
|
|
if(authority){
|
|
if(authority){
|
|
outObj.skuImg.push(skuImgUrl);
|
|
outObj.skuImg.push(skuImgUrl);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //详情图 - 图片类目需要网页直接抓取
|
|
|
|
+ let arr3 = document.querySelectorAll('.book-detail-content img');
|
|
|
|
+ for(let i=0; i< arr3.length; i++){
|
|
|
|
+ let detailImgUrl = arr3[i].src;
|
|
|
|
+ detailImgUrl = detailImgUrl.replace('.avif', '');
|
|
|
|
+ if(!authority && i < execNum){
|
|
|
|
+ outObj.detailImg.push(detailImgUrl);
|
|
|
|
+ }
|
|
|
|
+ if(authority){
|
|
|
|
+ outObj.detailImg.push(detailImgUrl);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
return outObj;
|
|
return outObj;
|
|
@@ -1658,6 +1678,33 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 详情图下载 --图书类目
|
|
|
|
+ if(this.settingArr.indexOf('detailImg') > -1 && jdImgInfo.detailImg.length == 0){
|
|
|
|
+ for(let j = 0; j < imgInfo.detailImg.length; j++){
|
|
|
|
+ let fileName = imgInfo.detailImg[j].split('/').pop();
|
|
|
|
+ if(fileName){
|
|
|
|
+ let queryIndex = fileName.indexOf('?');
|
|
|
|
+ if (queryIndex !== -1) {
|
|
|
|
+ fileName = fileName.substr(0, queryIndex);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let num = Number(j) + 1;
|
|
|
|
+ let suffix = '';
|
|
|
|
+ if(fileName.lastIndexOf('.') > -1){
|
|
|
|
+ suffix = fileName.substr(fileName.lastIndexOf('.'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!fs.existsSync(urlInfo.newPath + '\\详情图')) {
|
|
|
|
+ fs.mkdirSync(urlInfo.newPath + '\\详情图');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let outputPath = urlInfo.newPath + '\\详情图\\详情图' + num + suffix;
|
|
|
|
+ await this.downloadImage(imgInfo.detailImg[j], outputPath, urlInfo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**end**/
|
|
/**end**/
|
|
await page.close();
|
|
await page.close();
|
|
urlInfo.status = '4';
|
|
urlInfo.status = '4';
|