Node.js -每次循环一个url数组
Node.js - Looping through array of URLS one at a time
我是node js的初学者,我想写一个网页抓取脚本。我得到了网站管理员的许可,如果我一分钟的请求少于15个,我就可以删除他们的产品。当我开始时,它曾经一次请求所有的url,但经过一些工具,我能够遍历数组中的每个项目,但是当数组中没有更多的项目时,脚本不会停止?我对我的结果不是很满意,觉得有更好的方法来做这件事。
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
var async = require('async');
app.get('/scrape', function(req, res){
productListing = ['ohio-precious-metals-1-ounce-silver-bar','morgan-1-ounce-silver-bar']
var i = 0;
async.eachLimit(productListing, 1, function (product, callback) {
var getProducts = function () {
var url = 'http://cbmint.com/' + productListing[i];
request(url, function(error, response, html) {
if(!error){
var $ = cheerio.load(html);
var title;
var json = { title : ""};
$('.product-name').filter(function(){
var data = $(this);
title = data.children().children().first().text();
json.title = title;
})
}
var theTime = new Date().getTime();
console.log(i);
console.log(json.title);
console.log(theTime);
i++;
});
}
setInterval(getProducts,10000);
})
res.send('Check your console!')
})
app.listen('8081')
console.log('Magic happens on port 8081');
exports = module.exports = app;
您没有在迭代器函数中调用callback
。看一下eachLimit的文档。
相关文章:
- 一次又一次地在新的和相同的选项卡中打开一个url
- 如何使用特定的javascript函数创建一个url,以便在加载页面时运行
- 修改 HTML 的方式使左键应带到下一个 URL
- 给定一个 url,脚本如何找到加载的资源
- Javascript下载一个URL-Azure Blob存储
- 表单输入和选择值将创建一个URL
- 当数据在另一个URL上更新时,AngularJS是否可以在一个URL上触发$watch
- 将json数据发送到另一个url-在您'我从我自己的网址上得到的
- Javascript 转到 URL 如果用户输入特定数字,则转到另一个 URL
- 给定一个 URL,我如何找到锚 HTML 锚标记
- 仅当从另一个 URL 加载数据时,才会触发另一个插件
- 如何设置一个url(回调)来侦听javascript的答案
- regexp(?) 用于从另一个 URL 中提取 URL
- 使用 location.href 或类似内容打开一个 URL,后跟一个哈希符号
- 侦听 iframe 事件 - 打开一个 url
- jquery/js - 我有一堆值(字符串).我想通过 POST 将其发送到另一个 URL,我该怎么做
- 两个下拉列表表单以获取一个 URL
- 是可以用户刷新网页并同时重定向到另一个URL
- jQuery - 打开一个 URL 并选择一个值
- 您如何创建一个链接,单击该链接会将您带到一个页面,并打开一个转到另一个 URL 的新选项卡