Как говориться, умом Россию не понять...В чём прикол удалять товары из маркета по одному? Даже представить не мог, что такое может быть....
Ребят, сразу скажу, что решение, которое я накидал довольно медленное и конечно, можно сделать намного бодрее, но это нужно думать, делать, а мне лень. Поэтому, кому нужно, забирайте.
Работает на NodeJS + puppeteer. (Для тех кто не в курсе, нужно установить NodeJS, затем установить puppeteer и затем запустить скрипт командой: node scriptname.js
Также, заметил, что когда параллельно в браузере открыт личный кабинет магазина, скрипт вылетает в ошибку. Поэтому закройте магазин и запустить скрипт. На удаление одного товара у меня уходит 18 секунд с домашнего ПК, с сервера возможно будет побыстрее.
"use strict";
const fs = require("fs");
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false,
ignoreHTTPSErrors:true,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--ignore-certificate-errors',
],
})
const page = await browser.newPage();
await page.goto('https://passport.yandex.ru/auth/list?mode=auth&retpath=https://partner.market.yandex.ru/businesses')
await page.setViewport({ width: 1280, height: 720 })
//Авторизация и переход в каталог товаров
await page.waitForSelector('input[name=login]')
//Указываем логин
await page.type('input[name=login]', 'ваш-логин')
await page.click('button[type=submit]')
await page.waitForSelector('input[name=passwd]')
//Указываем пароль
await page.type('input[name=passwd]', 'ваш-пароль')
await page.click('button[type=submit]')
await page.waitForSelector('.___Tag___vy-iL')
//Вот в этой ссылке поменяйте ID
await page.goto('https://partner.market.yandex.ru/supplier/ваш-ID/assortment')
//Теперь собственно проходимcя циклом для удаление товаров
var step;
for (step = 0; step < 3162; step++) {
await page.waitForSelector('.___Clickable___1oWwf')
await page.click('.___tr___2UBvk .___Isvg___2UB1a > path')
await page.waitForSelector('.___container___1cGP9')
await page.click('.style-optionList___11bSK > li > .___Tag___2u0HH > .___Clickable___1D_dS > span[data-e2e-i18n-key="pages.assortment:offer-control-delete"]')
await page.waitForSelector('span[data-e2e-i18n-key="pages.assortment:delete-offer-confirm"]')
await page.click('span[data-e2e-i18n-key="pages.assortment:delete-offer-confirm"]')
await page.waitForSelector('.___content___2OfNu');
await page.reload({ waitUntil: ["networkidle0", "domcontentloaded"] });
console.log('Удалено: ' + step);
}
await browser.close()
})()
Не получилось, ругается на строку
await page.waitForSelector(‘.___Tag___vy-iL’)
Заменил на строку
await page.waitForSelector(‘.___Tag___3JuNA’)
При выполнении стал проваливаться в каталог, а там дальше в цикле вообще не пойму ругается на все троки, где указано больше одной строки.
Вот так ‘.___Clickable___1oWwf’ нормально.
Так ‘.___tr___2UBvk .___Isvg___2UB1a > path’ ошибка. not found selector