【发布时间】:2014-08-05 01:11:51
【问题描述】:
出于某种原因,我试图构思一个简单的脚本,它可以从给定的 Twitter 帐户中检索推文,然后用它做一些事情(这不是真正相关的部分)。按照朋友的建议,我尝试在 nodejs 中进行操作。他帮了我一点(实际上给了我一些代码),我设法让一些工作正常进行。因此,如果我想从一个用户那里检索所有推文,它工作得很好。但实际上我想要的是循环并检查新的推文。但是,当我将代码包装在一个简单的 while(1) 中(并根据需要对其进行修改)时,它什么也没做。所以这是我的代码:
var tweetFetcher = require('./tweetFetcher');
var codeExtractor = require('./codeExtractor');
var open = require('open');
var fs = require('fs');
var filters = [filter1, filter2];
var hasfirstpart = 0;
var code = "";
var tweets;
var i = 0;
while(1){
tweets = tweetFetcher.getFrom('twitteraccount', function(tweets) {
console.log(tweets[0]);
if(tweets[0].indexOf(filters[hasfirstpart]) > -1){
code += codeExtractor.extract(tweets[0]).substring(3);
hasfirstpart = (hasfirstpart+1)%2;
console.log(code);
}
if(hasfirstpart == 0 && code != ""){
...
}
});
}
var parser = require('cheerio');
var request = require('request');
exports.getFrom = function(username, cb) {
var url = "http://twitter.com/"+username;
request(url, function(err, resp, body) {
var $ = parser.load(body);
var tweets = [];
$('.ProfileTweet-text').each(function() {
tweets.push($(this).text());
});
if(typeof cb == 'function') {
cb(tweets);
}
});
}
你知道为什么它不能被包裹在一个循环中吗?提前感谢您的回复:)
【问题讨论】:
-
在编写时,您的程序看起来有点像拒绝服务攻击。立即向 Web 服务器发送 HTTP 请求是不好的做法,并且很可能会在短时间内阻止您的 IP 地址。
-
你说得对,我也注意到它并尝试使用 sleep 但无法安装它 - 由于某种原因无法正常工作
-
问题是,即使我在最后放置了一个繁忙的循环,它似乎也不起作用。