使用Cheerio和NodeJS </object>进行抓取时,对象#<object>没有方法'attr'

时间:2014-04-22 19:03:46

标签: jquery node.js web-scraping cheerio

在关注Node JS中的Web抓取教程时,我在终端中运行此脚本时遇到了这个问题:

Object #<Object> has no method 'attr'

这是我正在使用的脚本:

var request = require('request'),
    cheerio = require('cheerio'),
    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');
            urls.push(url)
        });

        console.log(urls);
    }
});

有关如何修复此脚本的任何想法,以便它不会抛出错误?任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:3)

默认情况下,范围对象this不是jQuery对象。

var url = this.getAttribute("href");
// or
var url = $(this).attr("href");