我使用cheerio
和nodejs
来抓取网站上所有可用的国家/地区,基本上我做了:
const rp = require('request-promise');
const cheerio = require('cheerio');
const options =
{
uri: 'https://uk.soccerway.com/',
transform: function(body)
{
return cheerio.load(body);
}
};
rp(options)
.then(($) =>
{
$('#navbar-left > div:eq(2) > select > option').each(function()
{
console.log($(this).val());
});
}).catch((err) =>
{
console.log(err);
})
我想得到Club Domestic的所有coutnries,不幸的是我的代码返回了这个:
那是什么?SyntaxError:不匹配的伪类:eq
更新
新代码(迭代不会启动):
request('https://uk.soccerway.com/', function(err, resp, html)
{
if (!err)
{
const $ = cheerio.load(html);
var countriesMenu = find($, '#navbar-left > div:eq(2) option');
$(countriesMenu).each(function()
{
console.log($(this).val());
});
}
});
答案 0 :(得分:2)
如评论中所述,cheerio不支持psuedo-class:eq。你不是在这里使用jQuery,$是cheerio对象。
以下是您可以使用的插件:https://github.com/watson/cheerio-eq
答案 1 :(得分:0)
:eq伪类未实现。但是,调用.eq()应该可以工作。