尝试使用Node.js刮取YouTube主页时清空数组

时间:2017-04-25 14:23:58

标签: javascript node.js google-chrome web-scraping cheerio

所以我正在玩请求和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' ]

1 个答案:

答案 0 :(得分:0)

cheerio为youtube加载的HTML是不同的。

执行res.send($.html());检查HTML结构并相应地定位它。