为什么要将此链接添加到集合中?

时间:2016-09-21 21:46:10

标签: javascript html node.js web-scraping cheerio

这是一个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'找不到任何提交按钮,那么为什么要将它添加到集合中呢?

是因为其他链接是从它链接的,它只是一直潜入里面?

0 个答案:

没有答案