如何使用带有 nodejs 的 cheerio 在已解析的 HTML 中查找特定的 JavaScript 代码?
How to find specific JavaScript code in parsed HTML using cheerio with nodejs?
我想在整个脚本中找到单个 JavaScript code/keyword,例如 zopim
或 v2.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
}
我想在整个脚本中找到单个 JavaScript code/keyword,例如 zopim
或 v2.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
}