所以我正在玩请求和cheerio npm&我似乎无法找到解决方案,为什么它一直给我空数组。当我刮掉reddit时,我使用相同的代码,它就像一个魅力,但当我在YouTube或任何其他页面上使用它时,它不起作用。
var request = require('request'),
cheerio = require('cheerio'),
fs = require('fs'),
urls = [];
request('https://www.youtube.com/', function(err,resp,body) {
if(!err && resp.statusCode == 200) {
var $ = cheerio.load(body);
$('a.yt-simple-endpoint style-scope ytd-grid-video-renderer', 'primary').each(function() {
var url = $(this);
urls.push(url);
});
这是我的reddit代码(工作正常)
var request = require('request'),
cheerio = require('cheerio'),
fs = require('fs'),
urls = [];
request('http://www.reddit.com/', function(err,resp,body) {
if(!err && resp.statusCode == 200) {
var $ = cheerio.load(body);
$('a.title', '#siteTable').each(function() {
var url = $(this).attr('href');
if(url.indexOf('imgur.com')!= -1) {
urls.push(url);
}
});
Output Example: [ 'http://i.imgur.com/WVrmZ9j.gifv',
'http://i.imgur.com/T0BchYC.gifv',
'http://imgur.com/u59lzux' ]
答案 0 :(得分:0)
cheerio为youtube加载的HTML是不同的。
执行res.send($.html());
检查HTML结构并相应地定位它。