javascript - 我的 Node.js 网络爬虫没有显示预期的输出?

标签 javascript node.js cheerio

这是我的网络爬虫与 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 个链接。

我做错了什么?

我该如何解决这个问题?

最佳答案

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

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

...虽然目前,a.title .may-blank 与我的 reddit 首页上的任何元素都不匹配;没有 .may-blank 元素是 a.title后代

如果您想要 a 元素同时具有 titlemay-blank,删除.may-blank之前的空格;对我来说,目前有 36 个:

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

或者只是 .may-blank 匹配 167。

关于javascript - 我的 Node.js 网络爬虫没有显示预期的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25485762/

相关文章:

javascript - Sublime 插件 - 查找并转到函数定义

javascript - Express.js 与 Node.js,多个客户端

node.js - 在连接路由器中获取请求对象

node.js - 抓取重定向的页面

javascript - 更改 React-Table 默认样式

javascript - 使用 fopen 复制 html 页面并检查新页面以查找 session 变量

javascript - 使用javascript单击时在链接下划线

node.js - 如何使用 mongoose Controller 路由将两个 mongodb 集合连接在一起?

javascript - Node 模块外的返回值

javascript - Cheerio api 上的“$”混淆