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

How to find specific JavaScript code in parsed HTML using cheerio with nodejs?

我想在整个脚本中找到单个 JavaScript code/keyword,例如 zopimv2.zopim.com,并在 NodeJS 上使用 cheerio。我写了一个脚本,从一个网站抓取所有链接,但脚本需要打开所有这些抓取的链接并在 JavaScript 代码中搜索 "zopim" 关键字。我看了 cheerio 的 repository and it's issues 但没有运气。我想知道任何人都可以帮我弄清楚这种情况吗? 这是我的代码的一部分,我在其中打开链接并在源代码中搜索关键字。如果有必要,我可以 post 所有这些。

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();
                });
            }
        );
    }
}

您可以使用 :contains 选择器查找文本中包含关键字 'zopim' 的脚本,然后计算找到的脚本元素:

const scriptsWithKeywordCount = $('script:contains("zopim")').length;
if (scriptsWithKeywordCount > 0) {
    // webpage contains keyword in javascript code
}