我有一个循环,它会为URL值抓取一些HTML。它以字符串形式返回该值。然后,我将该字符串添加到集合中。问题是,当我再次执行抓取时,重复的值被添加到集合中。我意识到这些实际上是不同的对象,但是在某些情况下它们具有相同的值。如何创建仅允许添加不同值(相对于不同对象)的集合?
const request = require('request');
const cheerio = require('cheerio');
let urlSet = new Set;
function scraper() {
request('https://www.pictame.com/user/xxxxxxx/stories/########', (error,
response, html) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);
$('.video').each((i, el) => {
const item = $(el).find('source').attr('src').toString();
//we have a string of a url
// add it to the set but only if string is unique
urlSet.add(item);
});
console.log(urlSet);
};
});
};
scraper();
setInterval(scraper, 60 * 500);
我希望将字符串添加到集合中,即使对象本身不同,也会省略重复的字符串。