这是一个node.js程序。
我有一个指向网页的链接,我想测试它是否有特定标记。
如果是,我想将该链接添加到一个集合(具有唯一值的数组);
我正在尝试测试链接是否具有“提交”类型的输入。如果它返回undefined,我会将它添加到一个集合中。
到目前为止,这是我的代码:
//Modules being used:
var cheerio = require('cheerio');
var request = require('request');
//harcoded url
var url = 'http://shirts4mike.com/';
// Load front page of shirts4mike
request(url, function(error, response, html) {
if(!error && response.statusCode == 200){
var $ = cheerio.load(html);
var urlSet = new Set();
//iterate over links with 'shirt'
$("a[href*=shirt]").each(function(){
var a = $(this).attr('href');
//create new link
var scrapeLink = url + a;
//for each new link, go in and find out if there is a submit button. If there, add it to the set
request(scrapeLink, function(error,response, html){
if(!error && response.statusCode == 200) {
var $ = cheerio.load(html);
if($('[type=submit]') !== undefined){
urlSet.add(scrapeLink);
console.log(urlSet);
}
}
});
});
}
});
现在,打印出的最后一组将是这样的:
Set {
'http://shirts4mike.com/shirt.php?id=106',
'http://shirts4mike.com/shirt.php?id=108',
'http://shirts4mike.com/shirt.php?id=105',
'http://shirts4mike.com/shirts.php',
'http://shirts4mike.com/shirt.php?id=107' }
大多数都是正确的,但是,我在'http://shirts4mike.com/shirts.php'
找不到任何提交按钮,那么为什么要将它添加到集合中呢?
是因为其他链接是从它链接的,它只是一直潜入里面?