Cheerio:SyntaxError:属性选择器格式不正确:对象全局
Cheerio: SyntaxError: Malformed attribute selector: object global?
这是我的代码:
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]
我该怎么解决?
错误。。。
SyntaxError:属性选择器格式不正确:对象全局]
实际上是对的。由于这里只发布了一段有问题的代码,所以不完全清楚这是在哪里发生的,但这肯定是属性选择器中的笔误-很可能是这个。。。
答案:
$('div[id^=foo_bar'); // <-- missing the closing ]
上面的例子是一个你通常(或任何编码你正在抓取的网站的人)不会注意到的错误,因为jQuery通常会悄悄地处理这个错误。。。
Proof 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>
解释:
错误实际上是Sizzle从cheerio下面的某个地方对你大喊大叫。当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选择器。
相关文章:
- 重复对象中的Array.push(),不正确或无法理解
- 错误:'这'对象不正确;在JQuery中单击事件-单击时的意外行为
- Kinetic.js旋转组对象的新子对象具有不正确的偏移
- 猫鼬 + lodash 扩展对象复制数组不正确
- 主干集合的模型对象结构不正确
- Javascript Date 对象不正确的日期
- Ajax - Spring 发送 javascript 对象并接受为自定义对象.客户端发送的请求在语法上不正确
- json对象内部的json处理不正确
- 将套接字存储为键会产生不正确的值Javascript对象.里面的例子
- Javascript控制台日志报告对象属性不正确
- 传递手动创建的RegExp对象时,String.match返回不正确
- 表单数据中的对象处理不正确
- FancyTree:节点对象在拖动到根级别时不正确
- Cheerio:SyntaxError:属性选择器格式不正确:对象全局
- JSON.stringfy(对象)不正确
- JS日期对象解析不正确
- 使用JSON.parse生成JSON对象的JSON格式不正确
- 对象.创建,JSON时不正确.对对象进行字符串化
- ShadowRoot's getSelection(). getrangeat(0)返回不正确的范围对象在谷歌C
- Javascript嵌套对象的Vim缩进不正确