我使用Net :: Twitter界面挖掘Twitter的Twitter的REST API。我能够获得带有搜索词的时间表,指定语言和返回大小等参数。
use Net::Twitter;
use Data::Dumper;
use Encode;
$, = "\t", $\ = "\n";
$consumer_key = q(<yourKey>);
$consumer_secret = q(<yourSecret>);
$access_token = q(<yourToken>);
$access_token_secret = q(<yourTokenSecret>);
my $t = Net::Twitter->new(
traits => [qw/API::RESTv1_1/],
consumer_key => $consumer_key,
consumer_secret => $consumer_secret,
access_token => $access_token,
access_token_secret => $access_token_secret,
);
my $search_term = q(@Monsanto);
my $result = $t->search($search_term, {lang => 'en', count => 100});
my $identity; # Last returned id
foreach my $status (@{$result->{'statuses'}}) {
$identity = $status->{id}; # Tweet ID
print $status->{user}->{screen_name}; # Screen Name
my $s = $status->{text}; # Tweeted Text
$s =~ s/[^[:ascii:]]+//g; # Strip Non-ASCII Encoded Characters
print $identity . '|' . $s; # Tweet ID | Tweeted Text
};
print 'STOPPED at ' . $identity; # ID of the last tweet
Twitter限制在任何一个搜索查询中返回的搜索结果的数量。将时间线延伸到速率限制之外需要进行游标。通常,获取最后(最早)推文的id并将其设置为最大值。下一个查询的ID。这里是NET :: TWITTER出现在这里。
my $result2 = $t->search($search_term, {max_id => $identity});
foreach my $status (@{$result2->{'statuses'}}) {
$identity = $status->{id};
print $status->{user}->{screen_name};
my $s = $status->{text};
$s =~ s/[^[:ascii:]]+//g;
print $identity . '|' . $s;
};
print 'STOPPED at ' . $identity;
我在32位Win XP操作系统上运行Perl。我尝试了很多方法。首先,我尝试将数字id替换为字符串来代替变量。
my $result2 = $t->search($search_term, {max_id => 406729969746722816});
或者
my $result2 = $t->search($search_term, {max_id => '406729969746722816'});
没有变化。我在Twitter的dev上测试了这个查询。控制台并验证REST API是否有效。
答案 0 :(得分:0)
万一你从来没有找到答案,也许你需要使用64位系统,因为看起来你正在使用'id'而不是'id_str'。数字推文ID现在可能比32位系统可以处理的更大。