CursosEmpresasBlogLiveConfPrecios

Scraping

Clase 29 de 31 • Curso de Fundamentos de Node.js

Clase anteriorSiguiente clase

Contenido del curso

Conocer los conceptos básicos de NodeJS

  • 1

    Instalación de Node.js

    00:53 min
  • 2
    Node: orígenes y filosofía

    Node: orígenes y filosofía

    04:40 min
  • 3
    EventLoop: asíncrona por diseño

    EventLoop: asíncrona por diseño

    04:38 min
  • 4
    Monohilo: implicaciones en diseño y seguridad

    Monohilo: implicaciones en diseño y seguridad

    09:41 min
  • 5
    Configurar las variables de entorno en Node.js

    Configurar las variables de entorno en Node.js

    07:22 min
  • 6
    Herramientas para ser más felices: Nodemon y PM2

    Herramientas para ser más felices: Nodemon y PM2

    09:55 min

Cómo manejar la asincronía

  • 7
    Callbacks

    Callbacks

    10:11 min
  • 8
    Callback Hell: refactorizar o sufrir

    Callback Hell: refactorizar o sufrir

    11:37 min
  • 9
    Promesas

    Promesas

    10:01 min
  • 10
    Async/await

    Async/await

    08:34 min

Entender los módulos del core

  • 11
    Globals

    Globals

    10:11 min
  • 12
    File system

    File system

    10:48 min
  • 13
    Console

    Console

    10:34 min
  • 14
    Errores (try / catch)

    Errores (try / catch)

    10:08 min
  • 15
    Procesos hijo

    Procesos hijo

    10:03 min
  • 16
    Módulos nativos en C++

    Módulos nativos en C++

    09:32 min
  • 17
    HTTP

    HTTP

    09:40 min
  • 18
    OS

    OS

    09:45 min
  • 19
    Process

    Process

    09:36 min

Utilizar los módulos y paquetes externos

  • 20
    Gestión de paquetes: NPM y package.json

    Gestión de paquetes: NPM y package.json

    09:27 min
  • 21
    Construyendo módulos: Require e Import

    Construyendo módulos: Require e Import

    09:46 min
  • 22
    Módulos útiles

    Módulos útiles

    12:35 min
  • 23
    Datos almacenados vs en memoria

    Datos almacenados vs en memoria

    03:39 min
  • 24
    Buffers

    Buffers

    07:47 min
  • 25
    Streams

    Streams

    11:50 min

Conocer trucos que no quieren que sepas

  • 26
    Benchmarking (console time y timeEnd)

    Benchmarking (console time y timeEnd)

    07:48 min
  • 27
    Debugger

    Debugger

    09:41 min
  • 28
    Error First Callbacks

    Error First Callbacks

    09:32 min

Manejar herramientas con Node

  • 29
    Scraping

    Scraping

    Viendo ahora
  • 30
    Automatización de procesos

    Automatización de procesos

    11:15 min
  • 31
    Aplicaciones de escritorio

    Aplicaciones de escritorio

    10:16 min
Tomar examen
    Victor Contreras

    Victor Contreras

    student•
    hace 6 años

    Me jodio un buen rato el ; del final del require, creo que es importante que para node siempre se use. Pensé que el profesor lo hacía por costumbre... pero no

      Juan Teixeira

      Juan Teixeira

      student•
      hace 6 años

      Gracias por colocar esto, justo me estaba pasando.!

      Ricardo Francisco Sánchez Sánchez

      Ricardo Francisco Sánchez Sánchez

      student•
      hace 6 años

      x2

    Mike Arthur Pinta Pacheco

    Mike Arthur Pinta Pacheco

    student•
    hace 4 años

    Para los que estén en WSL2, y les salga un error de este estilo:

    error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file: No such file or directory

    *Lo de "libatk" puede decir cualquier cosa con lib, prueben el siguiente comando

    sudo apt-get install -y libgbm-dev

    Si y ++SOLO SI++ no les funciona, prueben este comando ++también++

    sudo apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3

    En cualquiera de los dos casos les dará un error

    Unable to open X display.

    Al estar en un subsistema, no podemos ver pantallas, por lo que puppeteer en WSL solo funciona removiendole headless.

    Cambiamos esta linea

    const browser = await puppeteer.launch({ headless: false });

    A esto:

    const browser = await puppeteer.launch();

    ⚠️No vamos a poder ver la pagina en el navegador como en la clase, pero recuerden, puppeteer se usa mas que nada para ver una página sin necesidad de cargarla visualmente. Hay más métodos para usar puppeteer en windows, pero este es la manera mas sencilla que he encontrado para que funcione

      Alejandro Medina Castillo

      Alejandro Medina Castillo

      student•
      hace 4 años

      Gracias, este comentario debería tener más likes, fue justo lo que me funciono para WSL

      Enmanuel Josue Sarmiento Benitez

      Enmanuel Josue Sarmiento Benitez

      student•
      hace 4 años

      Gracias tu ayuda me sirvió para poder practicar lo visto bien clase, de resto el código no me funcionaba y veía y veía el código y no encontraba que tenía mal

    Francisco Garcia [C6]

    Francisco Garcia [C6]

    student•
    hace 6 años

    Esto es solo como para saber que existe. Pero para profundizar es necesario ver curso de scrapig o cacharrear.

    const puppeteer = require('puppeteer'); (async () => { console.log('lanzamos navegador'); // const browser = await puppeteer.launch(); const browser = await puppeteer.launch( { headless: false } ); const page = await browser.newPage(); await page.goto('https://es.wikipedia.org/wiki/Node.js'); var titulo1 = await page.evaluate(() => { const h1 = document.querySelector('h1'); console.log(h1.innerHTML); return h1.innerHTML; }); console.log(titulo1); console.log('Cerramos navegador'); browser.close(); console.log('Navegardor cerrado'); }) ();
      José Agustin Rios

      José Agustin Rios

      student•
      hace 6 años

      Gracias por pasarlo en limpio, voy a guardarme el codigo para futuras referencias

      Sergio Arturo Enriquez Nava

      Sergio Arturo Enriquez Nava

      student•
      hace 4 años

      Para este uso scraping se traduce como raspado.

    Cristian Alexander Salazar Atalaya

    Cristian Alexander Salazar Atalaya

    student•
    hace 5 años

    Para los que están en windows corriendo con WSL, he buscando pero al parecer no es posible hacerlo, les recomiendo que creebn otra carpeta limpia y lo hagan con la consola powersell de windows funciona bien.

      Samuel Martínez Hernández

      Samuel Martínez Hernández

      student•
      hace 4 años

      Fue por mucho lo más sencillo, trate de aplicar posibles soluciones de otros comentarios pero me mandaba un error sobre uno de lo módulos. Gracias!

    Carlos Enrique Gonzalez Peña

    Carlos Enrique Gonzalez Peña

    student•
    hace 4 años

    Con Puppeteer no solo podemos leer la informacion de la pagina, tambien podemos lazar eventos de click para editar o ejecutar acciones en dicha pagina, una ves lo utilice para cargar una pagina, buscar un boton y clickearlo, para despues agarrar un texto que aparecia en pantalla la cual era una token y utilizar esta en mis request. Aparte con Puppeteer podemos crear PDFs a patir de HTML, entre otras cosas!

    Puppeteer es hecho por google, recuerdo haber visto el directo cuando lo presentron, dele un ojo a su npm, es muy util el poder saber todas las posibilidades de ese, asi tienen mas maneras de solucionar sus problemas!

      Jose Ever Muñoz Muñoz

      Jose Ever Muñoz Muñoz

      student•
      hace 2 años

      wao puppeteer tiene a un grande detras

    Emanuel Valero

    Emanuel Valero

    student•
    hace 6 años

    En la página de github de puppeteer se puede encontrar más documentación sobre las cosas que este paquete hace. Aca comparto el enlace: https://github.com/puppeteer/puppeteer

    Cristian Daniel Jesus Rios

    Cristian Daniel Jesus Rios

    student•
    hace 5 años
    npm init –y npm i puppeteer
    Jose Daniel Molina

    Jose Daniel Molina

    student•
    hace 5 años

    Un resumen de la clase

    /* Entendiendo web scrapping con puppeteer... Funciona de forma asincrona */ const puppeteer = require('puppeteer'); // Funcion autoejecutable (async () => { console.log('Lanzar el navegador'); // const browser = await puppeteer.launch(); /* {headless: false} lo que hace es que el navegador no se lance en segundo plano */ const browser = await puppeteer.launch({headless: false}); // Abrir una pagina en el navegador const page = await browser.newPage(); // Ir a una pagina await page.goto('https://wikipedia.org/wiki/Node.js'); /* Ejecutar un script, con page.evaluate, lo que hace es evaluar lo que le digamos dentro de la pagina y devolver el resultado */ const titulo1 = await page.evaluate(() => { const h1 = document.querySelector('h1'); return h1.innerHTML; }); console.log(titulo1); // Usamos browser.close para cerrar el navegador despues de haber extraido los datos; console.log('Cerrando el navegador'); browser.close(); console.log('Navegador cerrado'); })();```
    Bruno Amadori

    Bruno Amadori

    student•
    hace 6 años

    Qué divertido y que ganas de programar bots que me dió esto jaja.

    José Barrios Pulido

    José Barrios Pulido

    student•
    hace 6 años

    Las función que describe el profesor se llaman IIFE: Funciones que se ejecutan tan pronto como se definen: https://developer.mozilla.org/es/docs/Glossary/IIFE

    Hans Roche

    Hans Roche

    student•
    hace 5 años

    Me daba error no abria Chrome, lo pude solucionar así:

    const puppeteer = require("puppeteer"); const PATHS = { win32: { executablePath: "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", userDataDir: "C:\\Users\\TuNombreDeUsuario\\AppData\\Local\\Temp\\puppeteer_user_data", }, linux: { executablePath: "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe", userDataDir: "/mnt/c/Users/TuNombreDeUsuario/AppData/Local/Temp/puppeteer_user_data", }, }; (async () => { console.log("Lanzamos navegador!"); const browser = await puppeteer.launch({ headless: false, executablePath: PATHS[process.platform].executablePath, userDataDir: PATHS.win32.userDataDir, defaultViewport: null, }); const page = await browser.newPage(); await page.goto("https://es.wikipedia.org/wiki/Node.js"); console.log("Cerramos Navegador..."); // browser.close(); console.log("Navegador cerrado"); })();
    Pablo Daniel Amé

    Pablo Daniel Amé

    student•
    hace 4 años

    Muy Muy poderoso, para los que tienen problemas con puppeteer en wsl2 lo solucione de la siguiente manera:

    Instalar chrome en wsl2 siguiendo este tutorial: Link

    en el codigo agregar está linea

    const browser = await puppeteer.launch({ args: [ '--disable-gpu', '--disable-dev-shm-usage', '--disable-setuid-sandbox', '--no-first-run', '--no-sandbox', '--no-zygote', '--single-process', ] }); // default is true
      christopher montiel

      christopher montiel

      student•
      hace 3 años

      Buenísimo me solucionaste la vida amigo!! muchas gracias!

    alam angel gutierrez vazquez

    alam angel gutierrez vazquez

    student•
    hace 4 años

    Sí tienen problemas instalando puppeteer:

    • reintenten el comando
    npm init –y
    • y después reintenten la instalación
    npm i puppeteer
    Esteban Cifuentes

    Esteban Cifuentes

    student•
    hace 4 años

    Para los que utilizan wsl2 esta es la mejor solucion que pude encontrar

    const browser = await puppeteer.launch({ args: [ '--disable-gpu', '--disable-dev-shm-usage', '--disable-setuid-sandbox', '--no-first-run', '--no-sandbox', '--no-zygote', '--single-process', ] });```
      Víctor Isaac Arias García

      Víctor Isaac Arias García

      student•
      hace 4 años

      Genial con esta linea me funciono el scraping en WSL2

    Ernesto Vizcaíno Alvarado

    Ernesto Vizcaíno Alvarado

    student•
    hace 6 años

    Curso de web Scraping

      Lizardo Reyes

      Lizardo Reyes

      student•
      hace 5 años

      Si, pero con python

      Cristhian Calderón

      Cristhian Calderón

      student•
      hace 2 años

      no aparece el curso de webscraping

    Marcial Ambriz

    Marcial Ambriz

    student•
    hace 5 años

    Yo tuve un problema al lanzar el navegador por que uso la consola WSL en VS code, lo logre con cmd, solo tuve que reinstalar puppeteer para que cargara de nuevo chromium y desde CMD ejecutar el código

    Wilson Fernando Antury Torres

    Wilson Fernando Antury Torres

    student•
    hace 6 años

    Función auto-ejecutable: ( async () => { } ) ()

      Felix Torres Javier Antonio

      Felix Torres Javier Antonio

      student•
      hace 3 años

      Mejor conocida como:

      IIFE (Immediately Invoked Function Expression)

      https://developer.mozilla.org/en-US/docs/Glossary/IIFE

    Raphael Hinostroza

    Raphael Hinostroza

    student•
    hace 6 años

    Me aparece el siguiente error:

    (node:8521) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process!

    Posdata: No puedo subir imágenes arrastrándolo al comentario.

      Ivan Sevilla

      Ivan Sevilla

      student•
      hace 6 años

      Me pasó lo mismo. Me mostraba esto:

      (node:5136) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process! spawn C:\Users\ivano\Documents\Cursos-Platzi\Fundamentos-de-NodeJS\handle-tools-with-node\scraping\node_modules\puppeteer\.local-chromium\win64-756035\chrome-win\chrome.exe ENOENT

      Lo que enes que hacer es ir al directorio que te aparece y te vas a dar cuenta que no está chrome.exe. Entonces lo que tenes que hacer es descomprimir chrome-win que en mi casa se encontraba en

      C:\Users\ivano\Documents\Cursos-Platzi\Fundamentos-de-NodeJS\handle-tools-with-node\scraping\node_modules\puppeteer\.local-chromium

      Una vez que lo descomprimir lo moves a la carpeta win64-756035 y borras lo que habia antes en esa carpeta

      De acá saque la solucion

      Arturo Mauricio Terceros Beltrán

      Arturo Mauricio Terceros Beltrán

      student•
      hace 5 años

      Con que descomprimiste? Algun comando?

    Leonardo Angelit Gálvez

    Leonardo Angelit Gálvez

    student•
    hace 4 años

    Está genial! Lo probé creand un servidor en node y mostrando ahí el listado de cursos que tengo en Platzi, con su badge y enlace al diploma, como idea para la web personal 🙈

    Alexander Nova Arevalo

    Alexander Nova Arevalo

    student•
    hace 6 años
    const puppeteer = require('puppeteer') const run = async ()=> { const browser = await puppeteer.launch() const page = await browser.newPage() // TOMAR UN SCREENSHOT // await page.goto('https://platzi.com/cursos/html5-css3/opiniones/1/'); // await page.screenshot({ // path: 'screenshot.png', // fullPage: true // }) async function getPageData() { await page.goto('https://platzi.com/cursos/html5-css3/opiniones/1/'); const data = await page.evaluate(()=>{ const $reviews = document.querySelectorAll('.Review') const data = [] $reviews.forEach(($reviews)=>{ let description = $reviews .querySelector('.Review-description') .textContent .trim() let name = $reviews .querySelector('.Review-info .Review-name strong') .textContent .trim() let starts = $reviews .querySelector('.Review-info .Review-stars') .querySelectorAll('.fulled') .length data.push({ content: description, name: name, starts : starts }) }) return { reviews: data, } }) console.log("DATA,", data); } getPageData() // await browser.close() } run()

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads