【问题标题】:Cheerio: SyntaxError: Malformed attribute selector: object global?Cheerio:SyntaxError:格式错误的属性选择器:对象全局?
【发布时间】:2014-09-17 14:52:04
【问题描述】:

这是我的代码:

var request = require('request'),
    cheerio = require('cheerio'),
    async = require('async');

function updateCars(){

    function getReviews(body){
        var $ = cheerio.load(body);
        var year = $(this).find(".field-item").text();
    }

    async.series([
        ....
        function(callback) {
            request(site+path, function(err, resp, body){
                if(!err && resp.statusCode == 200){
                    var $ = cheerio.load(body);
                    $(".views-row").each(getReviews(body));
                }
            });
        }
    ]);
}

当我在节点控制台中运行它时,我得到以下错误:

SyntaxError: Malformed attribute selector: object global]

我该如何解决这个问题?

【问题讨论】:

  • 什么是完整的堆栈跟踪?错误指的是哪一行?

标签: javascript node.js request cheerio


【解决方案1】:

错误...

SyntaxError: Malformed attribute selector: object global]

实际上是正确的。由于此处仅发布了违规代码的 sn-p,因此尚不完全清楚 在哪里发生这种情况,但这绝对是属性选择器中的笔误 - 很可能是这个......

答案:

$('div[id^=foo_bar'); // <-- missing the closing ]

上面的例子是一个你通常(或者你正在抓取的网站的编码者)不会注意到的错误,因为 jQuery 通常会悄悄地处理这个错误......

证明 jQuery 可以处理它:

var fooBars = $('a[id^="foo_bar"'); //<-- missing closing ]
$('#results').append("See... jQuery don't care about your closing ']' -" + fooBars.length)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="foo_bar_1">1</a>
<a id="foo_bar_2">2</a>
<a id="foo_bar_3">3</a>
<a id="foo_bim_4">4</a>
<a id="foo_bar_5">5</a>

<div id="results"></div>

说明:

错误实际上是Sizzlecheerio 下方的某个地方对你大喊大叫。虽然 jQuery 正在使用纯 javascript 实现...

var fooBar = document.querySelectorAll('a[id="foo_bar"'); // <-- missing
alert(fooBar.length); // works!

Cheerio 正在使用 Sizzle,它不喜欢“格式错误”的属性(在 IE 7-9 中也曾是一个问题)...

和 jQuery 一样,[Cheerios] 中选择元素的主要方法 文档,但与 jQuery 不同,它建立在 CSSSelect 之上 库,它实现了大多数 Sizzle 选择器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多