【问题标题】:Object #<Object> has no method 'attr' when scraping with Cheerio and NodeJS使用 Cheerio 和 NodeJS 抓取时,对象 #<Object> 没有方法“attr”
【发布时间】:2014-04-23 23:11:13
【问题描述】:

在学习 Node JS 中的网页抓取教程时,我在终端中运行此脚本时遇到了这个问题:

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);
    }
});

关于如何修复此脚本使其不会引发错误的任何想法?任何帮助将不胜感激!

【问题讨论】:

    标签: jquery node.js web-scraping cheerio


    【解决方案1】:

    范围对象this默认不是jQuery对象。

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

    【讨论】:

    • this.href 不好吗?
    • @RUJordan 可能,但 href 属性与属性不同。
    • 注意是 Cheerio,从传入的字符串创建的伪节点是否有属性,或者 getAttribute 方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多