Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ChereIO和nodejs在解析的HTML中查找特定的JavaScript代码?_Javascript_Node.js_Web Crawler_Cheerio - Fatal编程技术网

如何使用ChereIO和nodejs在解析的HTML中查找特定的JavaScript代码?

如何使用ChereIO和nodejs在解析的HTML中查找特定的JavaScript代码?,javascript,node.js,web-crawler,cheerio,Javascript,Node.js,Web Crawler,Cheerio,我想在NodeJS上使用cheerio在整个脚本中找到一个JavaScript代码/关键字,如zopim或v2.zopim.com。我编写了一个脚本,从单个网站获取所有链接,但该脚本需要打开所有这些获取的链接,并在JavaScript代码中搜索“zopim”关键字。我看了一下cheerio的,但是运气不好。我想知道有谁能帮我解决这个问题吗? 这是我的代码的一部分,我打开链接并在源代码中搜索关键字。如果有必要的话,我可以把它全部寄出去 function () { //console.log

我想在NodeJS上使用cheerio在整个脚本中找到一个JavaScript代码/关键字,如
zopim
v2.zopim.com
。我编写了一个脚本,从单个网站获取所有链接,但该脚本需要打开所有这些获取的链接,并在JavaScript代码中搜索“zopim”关键字。我看了一下cheerio的,但是运气不好。我想知道有谁能帮我解决这个问题吗? 这是我的代码的一部分,我打开链接并在源代码中搜索关键字。如果有必要的话,我可以把它全部寄出去

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();
                });
            }
        );
    }
}
函数(){
//log(totalURL);
log(“爬行完成了”)
如果(第==16页){
log(“分析网站…”);
异步的(
函数(){
返回checkedUrl
您可以使用
:contains
选择器查找文本中包含关键字
'zopim'
的脚本,然后计算找到的脚本元素:

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

代码中似乎有错误。您的代码解决了我的问题,但您的代码找到了脚本中有多少个
zopim
关键字,并且脚本包含4-5个zopim关键字,当我使用
console.log打印
scriptsWithKeywordCount
时,它表示有一个
zopim
关键字。我不明白为什么,但为我工作,非常感谢@tpbafk它显示包含关键字的
脚本
元素的数量(而不是脚本元素中的关键字数量)。所以,如果您有一个包含5个关键字的脚本,那么结果应该是1,这很好