0

这是我node.js使用cheerio库的网络爬虫:

var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');
var urls = [];

request('http://www.reddit.com', function(err, resp, body){
    if(!err && resp.statusCode == 200){
        var $ = cheerio.load(body);
        $('a.title may-blank').each(function(){
            var url = this.attr('href');
            urls.push(url);
        });
        console.log(urls);
    }
});

但是当我运行它时,我得到以下输出:

[] 

而不是数组中的 25 个链接。

我做错了什么?

我该如何解决?

4

2 回答 2

4

我猜may-blank是一个类,所以你需要一个.在它前面:

$('a.title .may-blank').each(...
// Here ---^

...虽然目前,a.title .may-blank对我来说,与 reddit 头版上的任何元素都不匹配;没有任何.may-blank元素.a.title

如果您想要既具有类具有类a的元素,请删除前面的空格;对我来说,目前有 36 个:title may-blank.may-blank

$('a.title.may-blank').each(...
//        ^-- no space

或者只.may-blank匹配 167。

于 2014-08-25T12:19:35.263 回答
-1

如果我没记错的话,有一点tpyo,标签选择器应该是'title may-blank',注意空格后面的空格,或者你应该将选择器更改为'^⁼'开头更宽恕,希望会有所帮助。

于 2014-08-25T12:34:16.600 回答