如何使用带有nodejs的cheerio在经过解析的HTML中查找特定的JavaScript代码?

时间:2018-11-20 13:08:47

标签: javascript node.js web-crawler cheerio

我想通过在NodeJS上使用cheerio在整个脚本中找到单个JavaScript代码/关键字,例如zopimv2.zopim.com。我编写了一个脚本,可以捕获来自单个网站的所有链接,但是该脚本需要打开所有这些捕获的链接,并在JavaScript代码中搜索“ zopim”关键字。我看了cheerio的repository,它是issues,但没有运气。我想知道有人能帮助我解决这种情况吗? 这是我的代码的一部分,我在其中打开链接并在源代码中搜索关键字。如有必要,我可以将其全部发布。

function () {
    //console.log(totalUrls);
    console.log("Crawling is done.")
    if (page == 16) {
        console.log("Anaylzing web sites...");
        async.whilst(
            function () {
                return checkedUrl < totalUrls.length;
            },
            function (urlCallback) {
                var currentUrl = totalUrls[checkedUrl]
                request(currentUrl, function (err, res, body) {
                    if (err) {
                        console.log('Error: ' + err);
                    }
                    var $ = cheerio.load(body);
                    $('.headerContent').each(function () {
                        var title = $(this).find('a').text();
                        console.log(currentUrl + title);// if the current web site has a '.headerContent' class print it.
                        // I want to print only if web site source code includes "zopim" keyword in JavaScript code
                    });
                    checkedUrl++;
                    urlCallback();
                });
            }
        );
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用public static boolean atualizarNomeUsuario (String nome) { try { FirebaseUser user = getUsuarioAtual(); UserProfileChangeRequest profile = new UserProfileChangeRequest.Builder() .setDisplayName( nome ) .build(); user.updateProfile(profile).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (!task.isSuccessful()){ Log.d("Perfil", "Erro ao atualizar nome de perfil."); } } }); return true; } catch (Exception e) { e.printStackTrace(); return false; } } 选择器来查找文本中包含关键字:contains的脚本,然后计算找到的脚本元素:

'zopim'