2012-05-26 2 views
2

스트리밍 API를 사용하여 트위터 크롤러를 만들었습니다. 이것은 Net:Twitter:Stream을 사용하여 perl로 프로그래밍됩니다. 나는 그것이 짹짹이 몇 개를 검색하고 있다고 생각합니다. 나는 지난 밤에 TV 시리즈 트윗을 추적하도록 남겨 두었고 나는 단지 30860 개의 트윗을 얻었다. 나는 그것이 낮은 가치라고 생각한다. 그것에 대해 어떻게 생각하십니까? 내가 사용할 수있는 다른 펄 라이브러리가 있습니까? 잘못된 코드가 있는지 확인하기 위해 여기에 제 코드를 입력하겠습니다.Twitter 스트리밍 크롤러를 개선하려면 어떻게해야합니까?

감사합니다 모두

티아고

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; 
+0

스크립트에 실행 코드가없고 서브 루틴 만 있습니다. 서브 루틴도 중첩되어 있으므로 좋은 생각이 아니므로 아마도 생각했던대로 작동하지 않을 것입니다. 프로토 타입을 사용하는 방법을 모르는 경우 프로토 타입을 사용하지 않는 것이 좋습니다. 'subcoletar {...} '이 아니라''subcoletar (... {{}' '이 아닙니다. 질문을 편집하고 실제로 무언가를하는 코드를 포함시켜야합니다. – TLP

+0

죄송합니다. 함수를 호출하는 것을 잊어 버렸지 만 코드가 끝날 때 수행합니다. 나는 coletar() {...}를 coletar {...}로 바꿨고 어떤 차이는 보이지 않습니다. 나는 그 질문을 갱신 할 것이다. 하지만, 같은 방식으로 작동합니다. 어제 밤부터 지금까지 80319 개의 짹짹을 뒤집었고 나는 그것이 낮은 가치라고 생각합니다. – Thiago

+0

이 모듈을 사용해 보셨습니까? AnyEvent :: Twitter :: Stream? 나는 Perl Mova에서 행동하는 것을 보았다. –

답변

2

트위터 스트림과 관련하여 유의해야 할 사항이 있습니다. 우선, 코드에 병목 현상이있는 경우 들어오는 트윗 대기열이 넘치고 연결이 끊어집니다. 그래서 그것은 당신의 코드가 아닐 수도 있습니다.

트위터는 "일반"소비자에게주는 트윗 수를 제한하고 전체 스트림에 대해 요금을 부과합니다. 따라서 속도 제한을 두드릴 수도 있지만 확실치는 않습니다.

트윗의 비율을 테스트하는 한 가지 방법은 필터에서 잡아야하는 트윗을 무작위로 보내는 두 번째 계정을 설정하는 것입니다. 그런 다음 스크레이퍼에서 잡힌 트윗의 백분율을 계산하십시오. 100 %가 아닌 경우 속도가 제한적일 수 있습니다.

+0

OK. 다른 계정을 만들고 크롤러를 테스트 해 보겠습니다. 하지만 속도가 제한적이라면 할 수있는 일이 있습니까? OAuth 인증에 대한 내용을 읽었지만 정확하지 않습니다. – Thiago

관련 문제