Foro Black Hat SEOArchivo · solo lectura
RankHispano

¿Quieres que se conozca tu proyecto?

Da de alta gratis tu proyecto en menos
de un minuto gracias a la IA
en RankHispano.com

Duda Scraper Twitter

Iniciado por Alekhine · 1 jun 2014 · 6 respuestas · 7831 visitas

  1. Alekhine
    Buen día,

    ¡Lo se, últimamente estoy muy preguntón! ¿alguien conoce un scraper para rastrear tweets de una cuenta ajena a la tuya y poder descargar dichos tweets en formato .excel o .csv.?

    Mil gracias


    ¡Me auto respondo! Acabo de encontrar una herramienta genial.

    Probado y funcionando

    Esto es una maravilla y encima gratis :)

    Tweets Scraper
  2. Alekhine
    La conocías @Sauron?
  3. Sauron
    Si quieres Scrapear Tweets con PHP puedes hacerlo con el siguiente código para trabajar con su API, eso si necesitas solicitar tus credenciales desde
    https://dev.twitter.com/

    Código de autentificación con el API de Twitter:
    //Usuario de Twitter que quieres scrapear sus tweets
    $twitter_handle = "usuario";
     
    function buildBaseString($baseURI, $method, $params) {
        $r = array();
        ksort($params);
        foreach($params as $key=>$value){
            $r[] = "$key=" . rawurlencode($value);
        }
        return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
    }
     
    function buildAuthorizationHeader($oauth) {
        $r = 'Authorization: OAuth ';
        $values = array();
        foreach($oauth as $key=>$value)
            $values[] = "$key=\"" . rawurlencode($value) . "\"";
        $r .= implode(', ', $values);
        return $r;
    }
     
    $url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
     
    $oauth_access_token = "your own";
    $oauth_access_token_secret = "your own";
    $consumer_key = "your own";
    $consumer_secret = "your own";
     
    $oauth = array( 'oauth_consumer_key' => $consumer_key,
                    'oauth_nonce' => time(),
                    'oauth_signature_method' => 'HMAC-SHA1',
                    'oauth_token' => $oauth_access_token,
                    'oauth_timestamp' => time(),
                    'oauth_version' => '1.0',
                    'screen_name' => $twitter_handle);
     
    $base_info = buildBaseString($url, 'GET', $oauth);
    $composite_key = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
    $oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
    $oauth['oauth_signature'] = $oauth_signature;
     
    // Make Requests
    $header = array(buildAuthorizationHeader($oauth), 'Content-Type: application/json', 'Expect:');
    $options = array( CURLOPT_HTTPHEADER => $header,
                      //CURLOPT_POSTFIELDS => $postfields,
                      CURLOPT_HEADER => false,
                      CURLOPT_URL => $url . '?screen_name=' . $twitter_handle,
                      CURLOPT_RETURNTRANSFER => true,
                      CURLOPT_SSL_VERIFYPEER => false);
    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);


    Código para mostrar los últimos tweets:
    $decode = json_decode($json, true); //getting the file content as array
     
    echo '<ul>';
    foreach($decode as $tweet) {
        $tweet_text = $tweet["text"];
        echo '<li>';
        echo $tweet_text;
        echo '</li>';
    }
    echo '</ul>';
     
    $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
    $reg_exHash = "/#([a-z_0-9]+)/i";
    $reg_exUser = "/@([a-z_0-9]+)/i";
     
    echo '<ul>';
    foreach ($decode as $tweet) {
        $tweet_text = $tweet["text"]; //get the tweet
          
        // make links link to URL
        // http://css-tricks.com/snippets/php/find-urls-in-text-make-links/
        if(preg_match($reg_exUrl, $tweet_text, $url)) {
     
           // make the urls hyper links
           $tweet_text = preg_replace($reg_exUrl, "<a href='{$url[0]}'>{$url[0]}</a> ", $tweet_text);
     
        }
     
        if(preg_match($reg_exHash, $tweet_text, $hash)) {
     
           // make the hash tags hyper links    https://twitter.com/search?q=%23truth
           $tweet_text = preg_replace($reg_exHash, "<a href='https://twitter.com/search?q={$hash[0]}'>{$hash[0]}</a> ", $tweet_text);
            
           // swap out the # in the URL to make %23
           $tweet_text = str_replace("/search?q=#", "/search?q=%23", $tweet_text );
     
        }
     
        if(preg_match($reg_exUser, $tweet_text, $user)) {
     
            $tweet_text = preg_replace("/@([a-z_0-9]+)/i", "<a href='http://twitter.com/$1'>$0</a>", $tweet_text);
     
        }
     
        // display each tweet in a list item
        echo "<li>" . $tweet_text . "</li>";
    } 
    echo '</ul>';


    Este código PHP lo he sacado de (trabaja con la versión actual del API de Twitter v1.1):
    http://www.johnbhartley.com/2013/twitter-feed-with-php-and-json-v1-1/
  4. Sauron
    Alekhine escribió:La conocías @Sauron?


    No conocía esa herramienta :), tiene muy buena pinta.
  5. Alekhine
    Joder menudas aportaciones! Haces que me sienta pequeño :(

    De todos modos muchas gracias.

    No obstante supongo que dicho código que proporcionas, habría que insertarlo en un archivo, (llamemoslo Scraper) y subirlo vía FTP a nuestro servidor y luego acceder a la ruta correspondiente www.misitioweb.com/scraper.php

    Es así?
  6. Sauron
    Alekhine escribió:No obstante supongo que dicho código que proporcionas, habría que insertarlo en un archivo, (llamemoslo Scraper) y subirlo vía FTP a nuestro servidor y luego acceder a la ruta correspondiente www.misitioweb.com/scraper.php

    Es así?


    Exacto, lo subes por FTP y lo ejecutas desde una url por ejemplo.

    Acuérdate de pedir tus credenciales para el API de Twitter
    https://dev.twitter.com/

    y cambiar estas líneas con esa información:
    $oauth_access_token = "your own";
    $oauth_access_token_secret = "your own";
    $consumer_key = "your own";
    $consumer_secret = "your own";
  7. Talega
    Gracias por el aporte, soy nuevo por aqui ahora pasaré por presentaciones.

Este hilo pertenece al archivo del foro y ya no admite respuestas.

Otros hilos de esta sección