需要有关 cheerio eq() 变量的建议
Need advice with cheerio eq() variables
所以我有这个 node.js 脚本可以抓取网页的某些部分:
var cheerio = require('cheerio');
var request = require('request');
var x = 1;
request({
method: 'GET',
url: 'https://balticnews.net/'
}, function(err, response, body) {
if (err) return console.error(err);
$ = cheerio.load(body);
$('#table, td').eq(x).each(function() {
console.log($(this).text());
});
});
但我需要 x 会改变。我试图制作一个 for 循环但没有任何改变。我需要当我 运行 这个程序时,它会向我显示 x=1 的结果,然后是 1+5,然后是 6+5 等等,这很难解释 :D 当然,我可以复制并粘贴这些内容次数并选择我需要的号码:
$('#table, td').eq(x).each(function() {
console.log($(this).text());
});
但我想学习如何更快地做到这一点
所以我知道您只需要索引:1,6,11 ..可能的解决方案是:
//Not tested
$('#table, td').each(function(index,element) {
if(index%5==1){
element.each(function(){
console.log($(this).text());
})
}
});
在更复杂的情况下,更通用的解决方案怎么样?
(我在 XML 但同样的评论将适用于 HTML 输入)
matchSeatIndex = $("mySeatList")
.not(':has(SEAT > LIST_CHARACTERISTIC:contains("1"))')
.has("SEAT > LIST_CHARACTERISTIC:contains('1W')")
.has("SEAT > STATUS:contains('AVAILABLE')")
.find('INDEX').first().text();
这里的问题是第一个过滤器(在包含“1”的特征上)也会过滤掉“1W”。
这样的话,分两部分写起来很蛋疼
matchSeatIndex = $("mySeatList")
.has("SEAT > LIST_CHARACTERISTIC:contains('1W')")
.has("SEAT > STATUS:contains('AVAILABLE')")
.find('INDEX').first().text();
//Then a second part to check with a function if the characteristic '1' is well present
不确定为什么 cheerio 没有在那里实现 :eq() ……听起来很基础。
有什么技巧吗?
所以我有这个 node.js 脚本可以抓取网页的某些部分:
var cheerio = require('cheerio');
var request = require('request');
var x = 1;
request({
method: 'GET',
url: 'https://balticnews.net/'
}, function(err, response, body) {
if (err) return console.error(err);
$ = cheerio.load(body);
$('#table, td').eq(x).each(function() {
console.log($(this).text());
});
});
但我需要 x 会改变。我试图制作一个 for 循环但没有任何改变。我需要当我 运行 这个程序时,它会向我显示 x=1 的结果,然后是 1+5,然后是 6+5 等等,这很难解释 :D 当然,我可以复制并粘贴这些内容次数并选择我需要的号码:
$('#table, td').eq(x).each(function() {
console.log($(this).text());
});
但我想学习如何更快地做到这一点
所以我知道您只需要索引:1,6,11 ..可能的解决方案是:
//Not tested
$('#table, td').each(function(index,element) {
if(index%5==1){
element.each(function(){
console.log($(this).text());
})
}
});
在更复杂的情况下,更通用的解决方案怎么样? (我在 XML 但同样的评论将适用于 HTML 输入)
matchSeatIndex = $("mySeatList")
.not(':has(SEAT > LIST_CHARACTERISTIC:contains("1"))')
.has("SEAT > LIST_CHARACTERISTIC:contains('1W')")
.has("SEAT > STATUS:contains('AVAILABLE')")
.find('INDEX').first().text();
这里的问题是第一个过滤器(在包含“1”的特征上)也会过滤掉“1W”。
这样的话,分两部分写起来很蛋疼
matchSeatIndex = $("mySeatList")
.has("SEAT > LIST_CHARACTERISTIC:contains('1W')")
.has("SEAT > STATUS:contains('AVAILABLE')")
.find('INDEX').first().text();
//Then a second part to check with a function if the characteristic '1' is well present
不确定为什么 cheerio 没有在那里实现 :eq() ……听起来很基础。 有什么技巧吗?