Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

259
Vistas
un selector obtiene todos los elementos, pero el otro no obtiene todos los elementos de la página

(modificado después de los consejos de los comentarios)

Lo que estoy tratando de hacer : raspado web para obtener los 100 nombres de criptomonedas de este sitio web .

Problema : el selector que utilicé no selecciona todos los nombres criptográficos en la página. Solo algunos de ellos son seleccionados.

En esa página web, hay 100 filas y cada fila tiene un nombre de criptomoneda. Así que 100 nombres en total.

Si uso este selector tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"]) ,

Encuentra los 100 elementos en la página, y puedo obtener la URL de cada criptografía de estos 100 elementos. (hay 100 criptomonedas en una página)

una muestra de los 100 elementos seleccionados:

 <a href="/currencies/ethereum/" class="cmc-link"><div class="sc-16r8icm-0 sc-1teo54s-0 dBKWCw"><img class="coin-logo" src="https://s2.coinmarketcap.com/static/img/coins/64x64/1027.png" loading="lazy" alt="ETH logo"><div class="sc-16r8icm-0 sc-1teo54s-1 dNOTPP"><p font-weight="semibold" color="text" font-size="1" class="sc-1eb5slv-0 iworPT">Ethereum</p><div class="sc-1teo54s-2 fZIJcI"><div class="sc-1teo54s-3 etWhyV">2</div><p color="text3" class="sc-1eb5slv-0 gGIpIK coin-item-symbol" font-size="1">ETH</p></div></div></div></a>

-Ningún problema hasta ahora.

Pero, si agrego >div>div>p a este selector para obtener cada nombre criptográfico,

( tr td a[href*="/currencies/"][href$="/"]:not([href$="/markets/"])>div>div>p ),

solo se seleccionan 19 elementos, no los 100 elementos.

una muestra de los elementos seleccionados:

 <p font-weight="semibold" color="text" font-size="1" class="sc-1eb5slv-0 iworPT">Ethereum</p>

Si me desplazo hacia abajo en la página, la cantidad de elementos seleccionados aumenta, pero lo que quiero es obtener los 100 elementos sin desplazarme con la rueda.

  1. ¿Por qué el primer selector encuentra todos los elementos de inmediato, mientras que el segundo necesita desplazarse hacia abajo en la página?
  2. ¿Qué selector debo usar para seleccionar los 100 nombres de criptomonedas sin desplazarme hacia abajo?

Gracias por adelantado :)

(Estoy probando web scraping usando Playwright, pero creo que esta es solo una pregunta general sobre el selector de CSS)

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto no es un problema con los selectores css. Es una página cargada dinámicamente, por lo que para obtener su contenido debe realizar una llamada API a

 https://api.coinmarketcap.com/data-api/v3/map/all?listing_status=active,untracked&exchangeAux=is_active,status&cryptoAux=is_active,status&start=10001&limit=10000

Una vez que haces eso, obtienes un json. Para extraer de eso el código de moneda, por ejemplo, necesita

 const obj = JSON.parse(response); curs = obj['data']['cryptoCurrencyMap']

si tu corres

 for (let cur of curs) {console.log(cur['symbol'])}

Deberías obtener bastantes códigos...

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda