• Как догрузить необходимые для парсинга JS элементы с сайта?

    Страница сайта скорее всего генерируется автоматически при помощи JS, сами скрипты тянут данные отсюда, ну а дальше скрипт JS парсит полученный словарь и динамически заполняет блоки нужными полями.

    Частично что выдает результатом такой запрос

    {
      "state":0,
      "data":
        {
          "products":
            [
              {"id":6583968,"root":5214366,"kindId":0,"subjectId":436,"subjectParentId":49,"name":"Спрей","brand":"Ollin Professional","brandId":11981,"siteBrandId":21981,"sale":24,"priceU":85100,"salePriceU":64600,"pics":8,"rating":5,"feedbacks":32767,"colors":[],"sizes":[{"name":"","origName":"0","rank":0,"optionId":23181493}],"diffPrice":false},
              {"id":3861036,"root":3198966,"kindId":0,"subjectId":358,"subjectParentId":49,"name":"Шампунь","brand":"Ollin Professional","brandId":11981,"siteBrandId":21981,"sale":24,"priceU":111400,"salePriceU":84600,"pics":8,"rating":4,"feedbacks":3586,"colors":[],"sizes":[{"name":"","origName":"0","rank":0,"optionId":14625839}],"diffPrice":false},
              {"id":7052045,"root":5547739,"kindId":0,"subjectId":372,"subjectParentId":49,"name":"Сыворотка","brand":"d'Alba","brandId":26057,"siteBrandId":36057,"sale":25,"priceU":370000,"salePriceU":277500,"pics":15,"rating":4,"feedbacks":2175,"colors":[],"sizes":[{"name":"","origName":"0","rank":0,"optionId":24472815}],"diffPrice":false},
              {"id":3860934,"root":3198957,"kindId":0,"subjectId":364,"subjectParentId":49,"name":"Флюид","brand":"Ollin Professional","brandId":11981,"siteBrandId":21981,"sale":24,"priceU":98400,"salePriceU":74700,"pics":8,"rating":5,"feedbacks":6549,"colors":[],"sizes":[{"name":"","origName":"0","rank":0,"optionId":14625737}],"diffPrice":false}
              ]
        }
    }



    Заголовки запроса

    User-Agent: Любой UA браузера
    Accept: */*
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Origin: https://www.wildberries.ru
    Connection: keep-alive
    Referer: https://www.wildberries.ru/
    Sec-Fetch-Dest: empty
    Sec-Fetch-Mode: cors
    Sec-Fetch-Site: cross-site



    А вообще, вкладка "сеть" инспектора кода, очень полезная вещь. Особенно когда работаешь с парсингом страниц.
    Делаешь GET запрос по приложенной ссылке с указанными заголовками. Получаешь в формате json ответ. Далее просто в циклах перебираешь элементы и берешь нужные тебе данные. Касаемо ссылки часть где передаются id товаров - получение этих id лучше тоже автоматизировать и подмешивать полученный результат в адрес.
    И не забывай, если часто с одного и того же IP-адреса будут лететь запросы в сторону сайта или API, то скорее всего попадешь в бан-лист сайта.
    Ответ написан
    Комментировать
  • Как в selenium проскроллить вниз отдельный элемент?

    @JRBRO
    Если при нажатии на этот элемент работает кнопка END, то так будет очень просто
    from selenium.webdriver.common.keys import Keys
    html = driver.find_element_by_tag_name('html')
    html.send_keys(Keys.END)
    Ответ написан
    Комментировать
  • Как в вебдрайвере Selenium добавить блокировщик рекламы AdBlock?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Можно не придумывать велосипеды, а использовать постоянный профиль.
    Оба варианта рабочие 100 пистонов!
    Проверял лично на Linux Mint 19.3 и Windows 10 20H2.
    Если при запуске профиля не существует, chrome сам его создает. При закрытии профиль сохраняется и при следующем запуске подхватывает его со всеми настройками и расширениями.

    Код (для Linux):
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("user-data-dir=/home/sergey/SeleniumProfile")
    driver = webdriver.Chrome(chrome_options=options)
    driver.get("https://google.com")

    Запускаете его, он создает профиль. Далее в браузере идете в магазин с расширениями и устанавливаете себе любые расширения. Все! При следующем запуске кода selenium будет использовать данный профиль вместе с расширениями.
    5fba809595a29657435273.png
    Вот код для Windows:
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("user-data-dir=C:\\profile")
    driver = webdriver.Chrome(chrome_options=options)
    driver.get("https://google.com")

    5fba9f0f92a7f243822459.png
    Ответ написан
  • Python3 не является внутренней или внешней командой, как исправить?

    shpaker
    @shpaker
    Вольный хлебопашец
    На винде при установке питона в папку Windows улетает исполняемый файл py.exe. Если у вас какие-то проблемы с запуском питона, то можно через него запустить. Просто наберите в терминале py. А вообще он предназначен для жизни с несколькими питонами на одной винде и например так можно запустить второй питон: py -2, а вот так третий: py -3. Ну а про то что python не срабатывает вестимо проблема в отсутствии пути в переменной PATH и да, возможно после её изменения надо будет выйти из системы и заново войти (но это не точно).
    Ответ написан
    Комментировать
  • Как правильно обрабатывать события в node-telegram-bot-api?

    mak_ufo
    @mak_ufo
    Кратко:
    Возьмите telegraf и посмотрите этот раздел

    Более развёрнуто:
    Вам нужно где-то хранить "состояние" пользователя. Например, в БД или Redis. И тогда код будет примерно такой:
    bot.on('message', msg => {
         const session = getSessionFromDb(msg.from.id)
         if (session === 'foo') { //пользователь уже ввёл напоминание
             //обрабатываем одним способом
         } else if (session === 'bar') { //пользователь не ввёл 
            //обрабатываем другим способом
         }
    })


    Развёрнуто:
    Читайте про конечную машину состояний. Её суть в том, что она на одинаковые входные данные возвращает разные значения в зависимости от состояния, в которой она находится. В той же википедии это подробно описано.
    Ответ написан
    1 комментарий
  • Как отобразить только последний успешный результат IMPORTXML и игнорировать, если возвращается ошибка?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Тут только скрипт поможет. Складировать результаты запросов (дата или номер + данные) в отдельный диапазон скриптом (определить последнюю незаполненную строку, положить данные по таймеру), и оттуда брать последний по дате без ошибок функцией FILTER().
    Ответ написан
    Комментировать
  • Как узнать что находится в spreadsheets?

    Zoominger
    @Zoominger
    System Integrator
    Получить доступ, вестимо.
    Иначе - никак.
    Ответ написан
    Комментировать
  • Можно ли отправить сообщение с плюсом (+) в VK API?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    $.ajax({
      url: 'https://api.vk.com/method/messages.send',
      method: 'POST',
    	data: {
    		access_token: "ТОКЕН",
    		v: 5.68,
    		message: "Ответ: 5+5=10",
    		chat_id: 1
      },
      dataType: 'JSONP',
      success: function(data){
            console.log(data);
      }
    });
    Ответ написан
    1 комментарий
  • Эксперты в области сети Tor, скажите ,как зайти на сайт Сбербанка через Tor браузер?

    Jump
    @Jump
    Системный администратор со стажем.
    как зайти на сайт Сбербанка через Tor браузер?
    Так же как и на любой другой.

    Похоже Сбербанк блокирует ip адреса, принадлежащие сети Tor
    Разумеется, так делает большинство серьезных ресурсов.

    как обойти эту блокировку?
    Заходить на нужный сайт с адресов не принадлежащих сети TOR.
    Ответ написан
    6 комментариев
  • Как Яндекс узнаёт местоположение при заходе через Tor?

    @untrusted
    Яндекс каждый раз безошибочно определяет - москва

    Москва в яндекс устанавливается по-умолчанию, всегда.
    Ответ написан
    Комментировать
  • Vk is not defined почему?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    Потому что VK [БОЛЬШИ-И-ИМИ БУКВАМИ ТАКИМИ]
    Ответ написан
    6 комментариев
  • Как спарсить данные с сайта?

    KickeRocK
    @KickeRocK
    FrontFinish
    Вам нужно писать решение под конкретную задачу, если гуглить прям так как в вопросе и еще добавить ЯП, вам поисковик приведет примеры.
    Всё остальное(конкретное решение) делается за деньги, либо за ваше время(вашими руками/головой)
    Ответ написан
    Комментировать
  • Зачем нужно так много div'ов в html для верстки сайта?

    @vardoLP
    Ват ю сэй эбаут май мама?!
    Ну это как бы негласные правила, чтобы другому верстаку было понятно )) wrapper - это значит обёртка. *-inner это значит внутренний основной блок, в котором уже будет лежать все остальное. Как правило он имеет фикс ширину. container - это тоже свого рода обёртка, это название пошло от bootstrap наверное ))
    Ответ написан
    Комментировать
  • Как извлечь кубический корень в гугл таблицах?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Как вариант, только комбинацией формул

    =SIGN(-9)*ABS(-9)^(1/3)
    Ответ написан
    Комментировать
  • Разные Теги HTML?

    просто это политика браузера, скорее всего все непонятые эму элементы он по дефолту принимает как DIV, но то что он это делает не значит, что это нужно использовать))
    Ответ написан
    Комментировать
  • Можно ли расположить табы листов в экселе в 2 ряда?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Не делать много листов. Для этого нужно всего лишь изменить структуру информации.

    Например, можно вкладки разбить по группам по смыслу, и каждую группу засунуть в отдельную книгу. Логически не должно быть ситуации, когда вам нужно искать по всем книгам, хотя это не так уж и сложно. Кстати, это как раз и будет 2 ряда, один из которых - панель задач с книгами.

    В общем, если у вас сотни однотипных вкладок типа Иванов, Петров, Сидоров, то надо что-то менять в структуре. Загнать эти фамилии в одну таблицу или что-то в этом роде. В крайнем случае, если задача очень сложная, можно перейти на работу с базой данных, но это отдельная история.
    Ответ написан
    Комментировать
  • Возможно ли улучшить качество кода?

    Zoominger
    @Zoominger Куратор тега Python
    System Integrator
    Если у меня нет аналитического мышления

    С каких пор какие-то абстрактные понятия о мышлении, введённые непонятно кем и базирующиеся на неавторитетных источниках стали каким-то фильтром для программирования? Вы пишете код? Пишете. Всё.

    со временем и практикой код станет лучше?

    Безусловно.

    Или лучше бросить мучить комп и бросать ?

    Если б вы шли в веб, я бы сказал "Да", но нет.

    По такому кусочку не скажешь. Код работает? Работает. Покодьте месяц и посмотрите на него снова. Есть что изменить? Если да, то вы растёте, если нет, то зарвались.
    Ответ написан
    Комментировать
  • Как обновить страницу единожды если время пришло?

    ns174ru
    @ns174ru
    https://ns174.ru
    через setTimeout js подгрузить див в нужно время, ничего перезагружать не нужно
    Ответ написан
    5 комментариев
  • Как правильно обойти объект JS для построения дерева?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const createTree = data => {
      const
        obl = {},
        org = {},
        podr = {};
    
      data.forEach(n => {
        obl[n.obl.id] = { ...n.obl, children: [] };
        org[n.org.id] = { ...n.org, children: [] };
        podr[n.podr.id] = { ...n.podr, children: [] };
      });
      data.forEach(n => podr[n.podr.id].children.push({ ...n.dolzh }));
      Object.values(org).forEach(n => obl[n.parent_obl].children.push(n));
      Object.values(podr).forEach(n => org[n.parent_org].children.push(n));
    
      return Object.values(obl);
    };
    
    
    const tree = createTree(arr);
    Ответ написан
    1 комментарий
  • Чем заменить btdigg.org?

    Dandrontiy
    @Dandrontiy
    Государственный комитет содействия пресечению
    Уже дано много дельных ответов. По состоянию на июнь 2017 года:
    Программы HAL и TorrentRover
    www.bithal.com - Русский интерфейс, поиск по Русским торентам. Очень удобна для поиска фильмов на русском, сериалов, музыки, русифицированных игр.
    https://www.torrentrover.com/ - Английский интерфейс, поиск по забугорным торентам. Очень удобна для поиска софта и всего англоязычного.

    Сайт https://btdb.in/ - Открывается только в TOR-Браузере. (https://www.torproject.org/projects/torbrowser.html.en)
    Поиск по громадной базе торентов. Можно найти редкий скан книги или редкую прогу.

    Сайт https://zooqle.com/ - Movies, TV Shows, Actors ;-) - так написано на самом сайте

    Сайт https://www.torrentz.in/ - Torrentz was a free, fast and powerful meta-search engine combining results from dozens of search engines.

    Сайт https://isohunt.to/ - IsoHunt is the most advanced BitTorrent and best P2P torrent search engine.

    Сайт tsearch.me - поиск по Русским торентам. Работает отлично и не заблокирован, но большинство ссылок открываются только тором. Поэтому лучше сразу запускать в TOR-Браузере (смотри выше)

    Если у ВАС есть еще какие-то способы поиска, не стесняйтесь, пишите, мне лично очень интересно!
    И да прибудет с Вами сила!
    Ответ написан
    Комментировать