我正在使用node.io
抓取网站。目前,我正在通过the scraping tutorial。
我正在将each
与选择器一起使用
$('selector').each( ... , function () { ... } );
但是,当选择器仅选择一个元素时,我收到此问题:
TypeError: Object #<Object> has no method 'each'
这可能是什么原因,以及如何缓解此问题
最佳答案
查看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:老实说,这是我的设计失败。每当我想从一个集合中只包含一个项目的单个元素时,我就讨厌键入first(),所以我添加了此快捷方式-我知道它会在某个阶段再次被我咬住!
有关如何将其更改为使用
jQuery
的信息,请参见this project issue,这将解决您的问题,以及解决方法和坚持使用soupselect
的好处。根据您的链接,当您使用
$
而不是jQuery时,您正在使用node-soupselect。它没有
.each
方法。改为使用
$('selector').forEach
这是本机JS函数
关于javascript - 在一个元素上调用.each,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15560907/