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

166
Vistas
How to crawling using Node.js

I can't believe that I'm asking an obvious question, but I still get the wrong in console log.

Console shows crawl like "[]" in the site, but I've checked at least 10 times for typos. Anyways, here's the javascript code.

I want to crawl in the site.

This is the kangnam.js file :

const axios = require('axios');
const cheerio = require('cheerio');
const log = console.log;

const getHTML = async () => {
    try {
        return await axios.get('https://web.kangnam.ac.kr', {
            headers: {
                Accept: 'text/html'
            }
        });
    } catch (error) {
        console.log(error);
    }
};

getHTML()
    .then(html => {
    let ulList = [];
    const $ = cheerio.load(html.data);
    const $allNotices = $("ul.tab_listl div.list_txt");
    
    $allNotices.each(function(idx, element) {
        ulList[idx] = {
            title : $(this).find("list_txt title").text(),
            url : $(this).find("list_txt a").attr('href')
        };
    });
    
    const data = ulList.filter(n => n.title);
    return data;
}). then(res => log(res));

I've checked and revised at least 10 times Yet, Js still throws this result :

root@goorm:/workspace/web_platform_test/myapp/kangnamCrawling(master)# node kangnam.js
[]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Mate, I think the issue is you're parsing it incorrectly.

$allNotices.each(function(idx, element) {
    ulList[idx] = {
        title : $(this).find("list_txt title").text(),
        url : $(this).find("list_txt a").attr('href')
    };
});

The data that you're trying to parse for is located within the first index of the $(this) array, which is really just storing a DOM Node. As to why the DOM stores Nodes this way, it's most likely due to efficiency and effectiveness. But all the data that you're looking for is contained within this Node object. However, the find() is superficial and only checks the indexes of an array for the conditions you supplied, which is a string search. The $(this) array only contains a Node, not a string, so when you you call .find() for a string, it will always return undefined.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

You need to first access the initial index and do property accessors on the Node. You also don't need to use $(this) since you're already given the same exact data with the element parameter. It's also more efficient to just use element since you've already been given the data you need to work with.

  $allNotices.each(function(idx, element) {
      ulList[idx] = {
          title : element.children[0].attribs.title,
          url : element.children[0].attribs.href
      };
  });

This should now populate your data array correctly. You should always analyze the data structures you're parsing for since that's the only way you can correctly parse them. Anyways, I hope I solved your problem!

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