如何使用ChereIO和nodejs在解析的HTML中查找特定的JavaScript代码?
我想在NodeJS上使用cheerio在整个脚本中找到一个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
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,这很好