我正在使用node.io
来抓取网站。目前我正在通过the scraping tutorial。
我正在使用带有选择器的each
$('selector').each( ... , function () { ... } );
但是当选择器只选择一个元素时,我收到了这个问题:
TypeError: Object #<Object> has no method 'each'
可能是什么原因,以及如何缓解此问题
答案 0 :(得分:4)
查看node.io
的源代码后,默认显示它使用的是node-soupselect
而不是jQuery。
尝试设置:
this.options.expand_single_selected = false;
在你的工作的运行方法中。或者,在创建作业时,将其设置为
new nodeio.Job({timeout:10,expand_single_selected:false}, methods);
这由these lines in the code,检查,它将强制执行正确的行为。
来自node.io
的创作者 chriso :
老实说,这是我的设计失败。每次我想要一个只有一个项目的集合中的单个元素时,我厌倦了先输入(),所以我添加了这个快捷方式 - 我知道它会在某个阶段回来咬我!
请参阅this project issue,了解如何将其更改为使用jQuery
而不是解决您的问题,以及坚持soupselect
的变通方法和好处。
根据您的链接,当您使用$
时,您没有使用jQuery,而是使用node-soupselect。
它没有.each
方法。
改为使用
$('selector').forEach
哪个是本机JS函数
答案 1 :(得分:0)
如果你把你的单个元素放在[方括号]中,它将作为单个项目数组并摆脱这个问题