Skip to main content
 首页 » 编程设计

perl中如何改进我的 Twitter 流式爬虫

2024年08月26日120powertoolsteam

我使用 Streaming API 做了一个 Twitter 爬虫。它是使用 Net:Twitter:Stream 在 perl 中编程的。 。我认为它检索到的推文很少。昨晚我让它跟踪电视剧推文,结果我只收到了 30860 条推文。我认为这是一个低值(value)。 你怎么看待这件事?还有其他我可以使用的 perl 库吗? 我将把我的部分代码放在这里看看是否有问题。

谢谢大家

蒂亚戈

use JSON; 
use Solr; 
use Net::Twitter::Stream; 
sub coletar{ 
    Net::Twitter::Stream->new ( user => $username, pass => $password, 
                    callback => \&got_tweet, 
                    connection_closed_cb => \&connection_closed, 
                    track => $track); #$track has my string search; 
    sub connection_closed { 
        if ($count==0){ 
           sleep 10; 
        } 
        elsif($count==1){ 
           sleep 20; 
        } 
        else{ 
           sleep 240; 
        } 
        $count++; 
        warn "Connection to Twitter closed"; 
        coletar();              #Recomeçando o download de tweets. 
    } 
    sub got_tweet { 
        $cont=0; 
        my ( $tweet, $json ) = @_;  
        # Here I save the tweet in my NoSQL database... 
    } 
} 
coletar; 

请您参考如下方法:

关于 Twitter 信息流,有几点需要牢记。首先,如果您的代码是瓶颈,传入推文的队列将溢出,您的连接将中断。所以它很可能不是你的代码。

Twitter 正在限制向“普通”消费者提供的推文数量,并对全流收费。因此,您可能会达到速率限制,但很难确定。

测试您收到的推文百分比的一种方法是设置第二个帐户,该帐户随机发送应在过滤器中捕获的推文。然后计算您的抓取工具中捕获的推文的百分比。如果不是 100%,您可能会受到速率限制。