Задать вопрос
Ответы пользователя по тегу Node.js
  • В чем разница между selenium, playwright и puppeteer?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - В 15 годах писал похожий парсер, используя node, fetch и axios, но сейчас часть сайтов возвращает html без таблиц с ценами, почему?

    - Для чего нужны selenium, playwright и puppeteer, если я могу через fetch и axios все получить?

    Скорее всего проблема в динамическом формировании этих данных на странице. Тут сразу 2 правильных ответа, можете и не можете единовременно:
    - Можете - в инструментах разработчика браузера смотрите, с какого адреса приходят данные и затем дергайте данные напрямую, минуя сам сайт, в таком случае можно продолжать использовать fetch.
    - Не можете - если вариант выше сложен, то вам нужен инструмент, который сможет выполнять js на странице. fetch/axios возвращают первый ответ сервера, т.е. js на тот момент еще не выполнился на странице, соответственно данные не были подгружены. Вопрос рендера js на странице решают инструменты по типу selenium, playwright и puppeteer.
    - Если все же использовать selenium, playwright и puppeteer, что из них лучше на данный момент?

    Вначале нужно определить, что понимается под "лучше":
    - Можно использовать критерий современности, тогда puppeteer отпадает (playwright написала команда puppeteer).
    - Можно использовать критерий производительности, тогда selenium проигрывает playwright сразу по 2 пунктам, по прожорливости и отклику на действия.
    - Можно использовать критерий обнаружения анти-бот системами, тогда selenium (с учетом undetected_chromedriver) проигрывает playwright тем, что имеет явную дополнительную задержку в ~100-300мс при выполнении CDP команд, что прям заметно. Playwright такой задержки либо не имеет вообще, либо она в рамках погрешности.
    Можно ли их с nodejs использовать?

    Selenium написан на java, но так же имеется возможность использования его с nodejs. Playwright вообще написан на ts, все примеры документации и сопутствующие библиотеки с большей вероятность будут писаться под ts по умолчанию.
    - Часто вижу о упоминание CDP в контексте парсинга, это зачем и для чего нужно?

    CDP (Chrome DevTools Protocol) грубо говоря - это некие "низкоуровневые" команды для "chromium based" браузеров, который позволяют этим браузером управлять. В playwright так реализованы большинство "высокоуровневых" команд, например: при использовании playwright мы пишем await locator.getAttribute(name), а playwright использует аналогичную команду из CDP DOM.getAttributes или DOM.describeNode.
    - Что использовать для отправки сообщений в телегу?

    Если речь идет об nodejs, то Telegraf.
    Ответ написан
    1 комментарий
  • Отправка формы html?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    данные формы не поступают в таблицу.

    Что значит "не поступают"? Что делаете и что при этом происходит? В консоли что? Пока придется гадать...
    const pool = mysql.createPool

    Вижу подключение к бд, но проверок успешно ли установлено соединение - нет.
    app.post("/two.html", urlencodedParser, function (req, res) {

    Вижу использование urlencodedParser для обработки данных формы, но не вижу его объявления, попробуйте так (express 4.16.0+):
    // Подключение к бд
    const urlencodedParser = express.urlencoded({extended: false});
    // app.post эндпоинт

    if(!req.body) return res.sendStatus(400);

    Больше инфы:
    console.log("req.body);
    if (!req.body) return res.status(400).send("Данные не были отправлены");

    if(err) return console.log(err);

    Больше инфы:
    if (err) {
      console.error('Error:', err);
      return res.status(500).send('Server error');
    }


    const name = req.body.name;
    const usluga = req.body.usluga;
    const tel = req.body.tel;

    Так симпатичнее:
    const {name, usluga, tel} = req.body;
    < form action="/two.html" method="post">

    Возможно, в будущем, будет лучше указать другой эндпоинт для приема данных с формы?
    <form action="/submit-form" method="post">
    Ну и на всякий, в вашем случае, two.html должен лежать рядом с server.js.
    Ответ написан
    2 комментария
  • Ошибка Uncaught ReferenceError: exports is not defined?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    https://github.com/webpack/webpack/issues/12040
    https://github.com/webpack/webpack/issues/4039#iss...
    Now that Babel 7.x is out, I'll just say that this should essentially be resolved. The only time you should see this, with Babel 7.x, is if you're doing one of:

    You've actually using import and module.exports in the same file, which is not allowed by Webpack. You can sidestep this by setting "modules": "commonjs", which will make Babel compile the import to a require. This breaks tree shaking, as mentioned above though, so fixing your code would be a better idea.
    You're using useBultins: 'entry'/'usage, or @babel/plugin-transform-runtime, and you are running Babel on CommonJS files (either your own, or in random node_modules, if you're trying to compile that). Babel assumes files are ES modules by default, meaning those transforms would insert import statements into your file, triggering case 1. above. You can avoid this issue by setting sourceType: "unambiguous" in your Babel configuration, which will tell it to guess the type, like Webpack does, instead of assuming all files are modules.
    Ответ написан
    Комментировать
  • Как лучше настроить режимы в WebPack сборке?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    но я не могу понять что такое NODE_ENV и isDev

    Режим сборки, development или production.
    можно ли как-то задать режимы попроще?

    А что тут сложного? Если проект не маленький, то обычно создают 2 разных файла конфигурации вебпака, один под devevelopment, другой под production.
    Ответ написан
  • Как описываются апи роута поиска по имени и части имени?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    А как описывается апишка, когда я хочу добавить вариант поиска по совпадениям с начала строки?

    Начинается на max, на max или vasya:
    api/users/search?name=max&startsWith=true
    api/users/search?name=max|vasya&startsWith=true

    Оканчивается, содержит или похоже:
    api/users/search?name=max&endsWith=true
    api/users/search?name=max&contains=true
    api/users/search?name=max&fuzzy=true

    Взято как база из Java, C#, JS, Python, в которых присутствуют аналогичные методы (как минимум startsWith и endsWith) при проверке расположения значения в строке.
    Ответ написан
    2 комментария
  • Почему не устанавливается nodemon?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Запустите консоль под админом. Ну и саму ошибку тоже можно было прочитать, там Вам предлагают решение.
    Ответ написан
    Комментировать
  • Проблемы с циклом?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    // for (let i = 0; i = expenses_without_first.length; i += 8) {
    for (let i = 0; i < expenses_without_first.length; i += 8) {

    work_id_array[i / 8]

    Интересная конструкция, а если поделить 8/8, то что получится?
    Ответ написан
    9 комментариев
  • Как при парсинге на node js смотреть цвет шрифта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Перейти на страницу.
    2. Получить все элементы по селектору.
    3. В цикле обойти каждый элемент, выполняя код на странице, который получит и вернет цвет элемента, затем проверить на белый.
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('//some.com')
    
    const symbol = "₽";
    const xpathExpression = `(//span[contains(text(), '${symbol}')])`;
    const els = await page.$x(xpathExpression);
    
    for (const el of els) {
      const c = await page.evaluate(_el => {
        const s = window.getComputedStyle(_el);
        return s.color;
      }, el);
    
      if (c === 'rgb(255, 255, 255)') console.log('White is detected!')
    }
    
    await browser.close();
    Ответ написан
    Комментировать
  • Как в цикле перебрать содержимое файлов на NodeJS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    использовать только асинхронные методы

    fs/promises:
    1. Получить список файлов директории - fs.readdir.
    1.1. Отфильтровать файлы только с расширением .json.
    2. Чтение файлов в цикле - fs.readFile.
    и в итоге отправлять содержимое на клиент

    Здесь лучше начать с запроса от клиента на сервер.
    Ответ написан
  • Может ли сервис узнать реальный ip?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    И я не совсем понимаю если я так подключаюсь , я скрываю свой ip или нет?

    Что мешает этому самостоятельно убедиться, используя любой сниффер? Запустите бота на саоем компе, и смотрите в сниффер (напр. Wireshark) на какой ip пошёл запрос.
    Какой шанс, что телеграм во втором случае может узнать мой ip

    А здесь все сложнее и зависит от дырявости proxy и других методов детектирования - Как устранить утечку DNS при использовании WireGuard на роутере?
    Ответ написан
    Комментировать
  • Не могу определиться с пайплайном, как разобраться?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Изучил основы JavaScript, понял что всякие манипуляции DOM мне не нужны, потому что это не используется больше

    Где и кем больше не используется?
    Думаю такой, может мне надо выучить React?

    Но есть почему-то ощущение что React в чистом виде мне не нужен, чтобы пользоваться Next.js.

    NextJS: The React Framework for the Web...
    А в "грязном" виде React какой?
    Я остановился и понял что я занимаюсь какой-то фигней. Что я хватаю отовсюду понемногу знаний, но они не складываются в общую картинку.

    Собственно вопрос: по какому пути лучше пойти, чтобы потихоньку прийти к желаемому?

    Все так и есть. Вам необходимо изучать JS в следующем порядке:
    1. Vanilla JS.
    2. React.
    3. Frontend React + NextJS.
    4. Fullstack React + NextJS (+NestJS?).
    При этом чтобы не потратить время впустую на изучения вещей, которые абсолютно не нужны.

    А вот здесь интересный момент. Видите ли, исходя из количества вакансий, NodeJS и все ее производные в качестве backend фреймворков - не сильно востребованы, относительно более специализированных backend языков/фреймворков. Если у Вас нет особой страсти к NodeJS, то рекомендую сфокусироваться лишь на frontend (учитывая, Ваш контекст), а затем (если будет возможность) - учить в дополнение к frontend более специализированные backend языки/фреймворки.
    Ответ написан
    2 комментария
  • Нужно ли снова устанавливать Node.js для каждого нового проекта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Попробую объяснить простым языком.

    0. Каждый проект по умолчанию имеет свои локальный пакеты (библиотеки), которые самостоятельно устанавливаются в корневую директорию node_modules, они устанавливаются на основе файла проекта package.json (инициализация).

    Предположим, что Вы не используете контейнеризацию, то:
    1. Ноду необходимо ставить глобально, например 18 версии. Что такое глобально? В таком случае, все Ваши проекты NodeJS смогут использовать эту ноду, хотя нода при этом не будет находиться локально ни в одном из Ваших проектов.
    2. Если все Ваши проекты используют исключительно ноду 18 версии, то дополнительную ноду ставить не требуется.
    ---
    3. Если у Вас проекты используют разные версии ноды, то рекомендую с нодой работать не на прямую, а через nvm (установка/удаление/переключение).
    ---
    4. Если Вы используете контейнеризацию, то обычно, нода+проект ставится в каждый контейнер.
    Ответ написан
    Комментировать
  • Как в 2023 изучать node.js?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как в 2023 изучать node.js?

    Как и в остальных годах.

    Столкнулся с такой проблемой, что при изучении node.js не хватает актуальных материалов

    Сильное заявление.

    но коннект с БД.

    С какой бд?

    Что актуального в плане изучения можете посоветовать?

    Гугл, говорят, помогает...

    Первый запрос, вторая ссылка:
    https://metanit.com/web/nodejs/8.1.php , вроде на монгу не похоже.
    Ответ написан
    Комментировать
  • Как научиться React.js и Node.js вместе?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Мой вопрос состоит в том, действительно он так хорош и не устарел ли он?

    hh.ru посмотрите.

    Знакомый посоветовал мне учить React.js по видео с YouTube канала IT-KAMASUTRA

    вы мне посоветуете?

    Для начала, лучше выбирать знакомых, а затем, не учиться по видео.
    Ответ написан
    Комментировать
  • Бэкенд node.js разработка без изучения фронта возможна?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    (и насколько востребовано?)

    Хайп по ноде закончился несколько лет назад, исходя из количества вакансий в "послехайповый период" - нода не очень популярна.

    https://hh.ru/search/vacancy?no_magic=true&L_save_...
    Node 81 вакансия

    https://hh.ru/search/vacancy?text=Php&from=suggest...
    Php 676 вакансий

    https://hh.ru/search/vacancy?text=Python&from=sugg...
    Python 679 вакансий

    https://hh.ru/search/vacancy?text=Golang&from=sugg...
    Go 208 вакансий
    Ответ написан
    Комментировать
  • Выскакивает ошибка Electron.js. Как исправить?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Удалите папку с нодой, почистите кеш ноды и заново установите все пакеты. Если не прокатит, то может версия ноды старая?
    Ответ написан
    2 комментария
  • Какой код для классификации тестов tensorflow.js?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вначале хотелось бы увидеть, что именно у Вас не получается (Ваш код). Ниже рабочие примеры, по которым я делал классификацию:
    https://medium.com/tensorflow/text-classification-...
    https://stackoverflow.com/questions/51698131/tenso...
    Ответ написан
    Комментировать