Manual Extracción de datos en Twitter mediante la API twitter4j

Embed Size (px)

Citation preview

  • Extraccin de datos en Twitter mediante la API twitter4j

  • Tabla de contenido

    0. INTRODUCCIN A SEARCH API Y STREAMING API ..................................................... 3

    1. REGISTRAR UNA APLICACIN EN TWITTER ............................................................ 13

    2. AUTENTICACIN MEDIANTE EL PROTOCOLO OAUTH PARA TWITTER ............ 14

    3. OBTENER DATOS DE SEARCH API CON TWITTER4J ............................................... 15

    4. OBTENER DATOS DE STREAMING API CON TWITTER4J ....................................... 16

    5. ALMACENANDO LOS DATOS EXTRADOS EN MYSQL .............................................. 17

  • 0. Introduccio n a Search API y Streaming API

    El conjunto de Search y Streaming API que proporciona Twitter ofrecen a los desarrolladores una

    amplia gama de mtodos para satisfacer diferentes necesidades, que van desde obtener el

    timeline1 de un usuario, publicar un tweet hasta obtener acceso a la corriente mundial de tweets.

    Como este tutorial no tiene el inters de detallar las funciones incluidas en cada API, se sugiere al

    lector visitar la direccin electrnica https://dev.twitter.com/docs y revisar la documentacin de

    ambas APIS.

    Streaming API proporciona un acceso de baja latencia a la corriente mundial de datos de Twitter.

    Se establece una conexin permanente con los servidores de Twitter y mediante una peticin http

    se recibe un flujo continuo de tweets en formato json.

    Search API suministra un conjunto de tweets correspondientes a una fecha no mayor a 7 das a

    partir de la fecha actual.

    Es posible filtrar los datos obtenidos de ambas APIS por palabras clave contenidas en el mensaje o

    por usuario, lenguaje y localizacin. De Streaming API por otro lado se pude obtener todo el

    caudal de tweets o slo los tweets que tienen enlaces o los tweets con retweets.

    Estas APIs encapsulan los datos en cuatro bloques Tweets, Users, Entyties y Places, para dar

    semntica a los datos que se originan desde la aplicacin. Estos bloques pueden ser vistos como

    clases en los lenguajes orientados a objetos, como es el caso de Java.

    Tweets es el bloque bsico de construccin de todas las cosas de Twitter, tambin conocida en la

    documentacin como Status. En la siguiente tabla se muestra un listado de los atributos que

    contiene Tweets, y para cada atributo se especifica el tipo de dato, descripcin y un ejemplo en

    formato JSON.

    Campo Tipo Descripcin Ejemplo

    contributor Contributors Una coleccin de objetos de usuario (por lo general slo una) que indica a los usuarios que contribuyeron a la autora del tweet, en nombre del autor de Twitter oficial.

    "contributors": [ { "id":819797, "id_str":"819797",

    1

  • "screen_name":"episod" } ]

    coordinates Coordinates Representa la ubicacin geogrfica de este Tweet segn lo informado por el usuario o la aplicacin cliente. La matriz de coordenadas internas se formatea como GeoJSON (Longitud, luego de latitud).

    "coordinates": { "coordinates": [ -75.14310264, 40.05701649 ], "type":"Point" }

    created_at String Hora UTC cuando este Tweet fue creado. "created_at":"Wed Aug 27 13:08:45 +0000 2008"

    current_user_retweet

    Object Detalles del Tweet ID del propio retweet del usuario (si existe) de este Tweet.

    "current_user_retweet": { "id": 26815871309, "id_str": "26815871309" }

    entities Entities Las entidades que han sido analizadas por el texto del tweet.

    "entities": { "hashtags":[], "urls":[], "user_mentions":[] }

    favorite_count Integer Indica aproximadamente cuntas veces este Tweet ha sido favorito por los usuarios de Twitter.

    "favorite_count":1138

    favorited Boolean Indica si este Tweet ha sido favorito por el usuario que se autentica.

    "favorited":true

    filter_level String Indica el valor mximo del parmetro filter_level que puede ser utilizado

    "filter_level": "medium"

    geo Object En desuso

    id Int64 La representacin entera del identificador nico para este Tweet. Este nmero es mayor que 53 bits y algunos lenguajes de programacin puede tener dificultad / defectos en silencio en su interpretacin. El uso de un entero con signo de 64 bits para almacenar este identificador es seguro. Utilice id_str para buscar el identificador de una forma segura.

    "id":114749583439036416

    id_str String La representacin de cadena del identificador nico para este Tweet. Las implementaciones deben usar este en lugar del entero grande..

    "id_str":"114749583439036416"

  • in_reply_to_screen_name

    String Si el Tweet representado es una respuesta, este campo contiene el nombre de pantalla del autor original del Tweet.

    "in_reply_to_screen_name":"twitterapi"

    in_reply_to_status_id

    Int64 Si el Tweet representado es una respuesta, este campo contiene la representacin entera del original Tweet ID.

    "in_reply_to_status_id":114749583439036416

    in_reply_to_status_id_str

    String Si el Tweet representado es una respuesta, este campo contiene la representacin de cadena del original Tweet ID.

    "in_reply_to_status_id_str":"114749583439036416"

    in_reply_to_user_id

    Int64 Si el Tweet representado es una respuesta, este campo contiene la representacin entera del autor original del Tweet ID. Esto no necesariamente siempre ser el usuario directamente mencionado en el Tweet.

    "in_reply_to_user_id":819797

    in_reply_to_user_id_str

    String Si el Tweet representado es una respuesta, este campo contiene la representacin en cadena del autor original del Tweet ID. Esto no necesariamente siempre ser el usuario directamente mencionado en el Tweet.

    "in_reply_to_user_id_str":"819797"

    lang String Cuando est presente, indica un identificador BCP 47 de idioma correspondiente al lenguaje mquina detectado en el texto del Tweet, o " und "si no hay un lenguaje detectado. Nota: A partir del 15 de marzo 2013, este campo est disponible en REST pero no Streaming.

    "lang": "en"

    place Places Cuando est presente, indica que el tweet se asocia (pero no necesariamente se origina a partir de) un lugar.

    "place": { "attributes":{}, "bounding_box": { "coordinates": [[ [-77.119759,38.791645], [-76.909393,38.791645], [-76.909393,38.995548], [-77.119759,38.995548] ]], "type":"Polygon" }, "country":"United States", "country_code":"US",

  • "full_name":"Washington, DC", "id":"01fbe706f872cb32", "name":"Washington", "place_type":"city", "url": "http://api.twitter.com/1/geo/id/01fbe706f872cb32.json" }

    possibly_sensitive

    Boolean El significado del campo no se refiere a los contenidos de Twitter en s, sino que es un indicador de que la direccin que figura en el tweet puede contener contenidos o medios identificados como contenido sensible.

    "possibly_sensitive":true

    scopes Object Un conjunto de pares clave-valor que indica la entrega contextual prevista de la que contiene un Tweet. Actualmente utilizado por los productos promocionados de Twitter.

    "scopes":{"followers":false}

    retweet_count Int Nmero de veces que ha sido retweeteado este Tweet.

    "retweet_count":1585

    retweeted Boolean Indica si este Tweet ha sido retweeteado por el usuario que se identifica.

    "retweeted":false

    retweeted_status

    Tweet Los usuarios pueden ampliar la difusin de los tweets escritos por otros usuarios por un retweet . Retweets se pueden distinguir de los Tweets tpicos por la existencia de unretweeted_status atributo. Este atributo contiene una representacin del original Tweet que fue retweeteado. Tenga en cuenta que los retweets de retweets no muestran representaciones de los retweets intermedios, sino slo del tweet original.

    source String Utilizado para publicar el tweet, como una cadena con formato HTML.

    "source":"\u003Ca href=\"http:\/\/itunes.apple.com\/us\/app\/twitter\/id409789998?mt=12\" rel=\"nofollow\"\u003ETwitter for Mac\u003C\/a\u003E"

    text String El actual texto UTF-8 de la actualizacin de estado.

    "text":"Tweet Button, Follow Button, and Web Intents javascript now support SSL http:\/\/t.co\/9fbA0oYy ^TS"

    truncated Boolean Parmetro Indica si el texto se ha truncado, por ejemplo, como resultado de un tweet superior a la longitud de 140 caracteres. Los textos truncados

    "truncated":true

  • terminarn en puntos suspensivos, como este...

    user Users El usuario que public este Tweet. Atributos de perspectiva incrustados dentro de este objeto son poco fiables.

    "user":{"statuses_count":3080, "favourites_count":22, "protected":false, "profile_text_color":"437792", "profile_image_url":"...", "name":"Twitter API", "profile_sidebar_fill_color":"a9d9f1", "listed_count":9252, "following":true, "profile_background_tile":false, "utc_offset":-28800, "description":"The Real Twitter API. I tweet about API changes, service issues and happily answer questions about Twitter and our API. Don't get an answer? It's on my website.", "location":"San Francisco, CA", "contributors_enabled":true, "verified":true, "profile_link_color":"0094C2", "followers_count":665829, "url":"http:\/\/dev.twitter.com", "default_profile":false, "profile_sidebar_border_color":"0094C2", "screen_name":"twitterapi", "default_profile_image":false, "notifications":false, "display_url":null, "show_all_inline_media":false, "geo_enabled":true, "profile_use_background_image":true, "friends_count":32, "id_str":"6253282", "entities":{"hashtags":[], "urls":[], "user_mentions":[]}, "expanded_url":null, "is_translator":false, "lang":"en", "time_zone":"Pacific Time (US & Canada)", "created_at":"Wed May 23 06:01:13 +0000 2007", "profile_background_color":"e8f2f7", "id":6253282, "follow_request_sent":false, "profile_background_image_url_https":"...", "profile_background_image_url":"...", "profile_image_url_https":"..."}

  • withheld_copyright

    Boolean Cuando est presente y se establece en "true", indica que esta pieza de contenido se ha retenido debido a una reclamacin de la DMCA.

    "withheld_copyright": true

    withheld_in_countries

    Array of String

    "withheld_in_countries": ["GR", "HK", "MY"]

    withheld_scope String "withheld_scope": "status"

    CAMPO Tipo Descripcin Ejemplo

    contributors_enabled

    Boolean Indica que el usuario tiene una cuenta en el "modo colaborador" activado, lo que permite Tweets emitidos por el usuario para ser coescrito por otra cuenta. Rara vez es cierta.

    "Contributors_enabled": false

    created_at String Fecha y hora UTC en que la cuenta de usuario se cre.

    "Created_at": "Lun Nov 29 21:18:15 +0000 2010"

    default_profile Boolean Cuando es true, indica que el usuario no ha alterado el tema o el fondo de su perfil de usuario.

    "default_profile": false

    default_profile_image

    Boolean Cuando es true, indica que el usuario no ha subido su propio avatar y por defecto se utiliza un huevo como avatar.

    "default_profile_image": false

    description String Cadena (UTF-8) definida por el usuario que describe su cuenta.

    "description":"The Real Twitter API."

    entities Entities Entidades que han sido analizados de los campos url o descripcin definidos por el usuario.

    "entities": { "url": { "urls": [ { "url": "http:\/\/dev.twitter.com", "expanded_url": null, "indices": [0, 22] } ] }, "description": {"urls":[] } }

    favourites_count Int Numero de tweets del usuario que han sido favoritos.

    "favourites_count": 13

    follow_request_sent

    Type Cuando es true, indica que el usuario que se identifica ha emitido una solicitud para

    "follow_request_sent":false

  • seguir a esta cuenta de usuario protegida.

    following Boolean Cuando es true, indica que el usuario que se identifica est siguiendo a este usuario. Algunos falsos negativos son posibles cuando se establece en "false", pero estos falsos negativos cada vez se representan como "nulo" en su lugar.

    "following":true

    followers_count Int Nmero de seguidores que esta cuenta tiene actualmente. Bajo ciertas condiciones de presin, este campo indicar temporalmente "0".

    "followers_count": 21

    friends_count Int Nmero de usuarios que esta cuenta est siguiendo. Bajo ciertas condiciones de presin, este campo indicar temporalmente "0".

    "friends_count": 32

    geo_enabled Boolean Cuando es true, indica que el usuario ha habilitado la posibilidad de geoetiquetado de sus Tweets. Este campo debe ser verdadero para el usuario actual para adjuntar los datos geogrficos utilizando POST statuses/update.

    "geo_enabled": true

    id Int64 Representacin entera del identificador nico para este usuario. Este nmero es mayor a 53 bits y algunos lenguajes de programacin puede tener dificultad / defectos en silencio en su interpretacin. El uso de un entero con signo de 64 bits para almacenar este identificador es seguro.

    "id":6253282

    id_str String La representacin de cadena del identificador nico para este usuario.

    "id_str":"6253282"

    is_translator Boolean Cuando es true, indica que el usuario es un participante en Twitter de translator community.

    "is_translator": false

    lang String El BCP 47 cdigo para el idioma de la interfaz de usuario. Puede o no tener nada que ver con el contenido de sus tweets.

    "lang": "en" "lang": "msa" "lang": "zh-cn"

    listed_count Int ---------------------------------- "listed_count":9274

    location String Ubicacin definida por el usuario para el perfil de esta cuenta. No necesariamente se refiere a un lugar analizable. Este campo de vez en cuando es interpretado vagamente por el servicio de bsqueda.

    "location":"San Francisco, CA"

  • name String El nombre del usuario, ya que hemos definido. No necesariamente se refiere al nombre de una persona. Por lo general un lmite de 20 caracteres, pero sujeta a cambios.

    "name":"Twitter API"

    notifications Boolean En desuso "profile_background_color":"e8f2f7"

    profile_background_color

    String El color hexadecimal elegido por el usuario para su fondo.

    "profile_background_color":"e8f2f7"

    profile_background_image_url

    String Una direccin URL basada en HTTP que apunta a la imagen de fondo que el usuario ha subido a su perfil.

    "profile_background_image_url": "http:\/\/a2.twimg.com\/profile_background_images\ /229557229\/twitterapi-bg.png"

    profile_background_image_url_https

    String Una direccin URL basada en HTTPS que apunta a la imagen de fondo que el usuario ha subido a su perfil.

    "profile_background_image_url_https": "https:\/\/si0.twimg.com\/profile_background_images\ /229557229\/twitterapi-bg.png"

    profile_background_tile

    Boolean -------------------------------------------------------------------------------------

    "profile_background_tile":false

    profile_banner_url

    String -------------------------------------------------------------------------------------

    "profile_banner_url": "https://si0.twimg.com/profile_banners/819797/1348102824"

    profile_image_url

    String Una direccin URL basada en HTTP que apunta a la imagen del avatar del usuario.

    "profile_image_url": "http:\/\/a2.twimg.com\/profile_images\/1438634086\ /avatar_normal.png"

    profile_image_url_https

    String Una direccin URL basada en HTTPS sealando imagen de avatar del usuario.

    "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/1438634086\ /avatar_normal.png"

    profile_link_color

    String Color hexadecimal que el usuario ha optado para mostrar los vnculos en su interfaz de usuario.

    "profile_link_color":"0094C2"

    profile_sidebar_border_color

    String -------------------------------------------------------------------------------------

    "profile_sidebar_border_color":"0094C2"

    profile_sidebar_fill_color

    String -------------------------------------------------------------------------------------

    "profile_sidebar_fill_color":"a9d9f1"

    profile_text_color

    String El color hexadecimal que el usuario ha elegido para mostrar el texto en su interfaz de usuario.

    "profile_text_color":"437792"

  • profile_use_background_image

    Boolean -------------------------------------------------------------------------------------

    "profile_use_background_image":true

    protected Boolean Cuando es true, indica que el usuario ha optado por proteger a sus Tweets.

    "protected": true

    screen_name String El nombre de pantalla o alias con el que el usuario se identifica. screen_names son nicas, pero sujeta a cambios. Utilice id_strcomo un identificador de usuario siempre que sea posible.

    "screen_name":"twitterapi"

    show_all_inline_media

    Boolean -------------------------------------------------------------------------------------

    "show_all_inline_media": false

    status Tweets -------------------------------------------------------------------------------------

    "status": { "coordinates": null, "favorited": false, "truncated": false, "created_at": "Tue Apr 17 16:38:18 +0000 2012", "id_str": "192290904646754304", "entities": { "urls": [ ], "hashtags": [ ], "user_mentions": [ { "name": "Micah McVicker", "id_str": "166661446", "id": 166661446, "indices": [ 0, 14 ], "screen_name": "MicahMcVicker" } ] }, "in_reply_to_user_id_str": "166661446", "contributors": null, "text": "@MicahMcVicker make sure you're using include_rts=true and no other filters, then walking your timeline by since_id and max_id",

  • "retweet_count": 0, "in_reply_to_status_id_str": "192290470427246594", "id": 192290904646754304, "geo": null, "retweeted": false, "in_reply_to_user_id": 166661446, "place": null, "in_reply_to_screen_name": "MicahMcVicker", "source": "YoruFukurou", "in_reply_to_status_id": 192290470427246594 },

    statuses_count Int Nmero de tweets (incluyendo retweets) emitido por el usuario.

    "statuses_count": 42

    time_zone String Una cadena que describe la zona horaria del este usuario declara a s mismos en su interior.

    "time_zone":"Pacific Time (US & Canada)"

    url String Un URL proporcionada por el usuario en asociacin con su perfil.

    "url":"http:\/\/dev.twitter.com"

    utc_offset Int Desplazamiento de GMT / UTC en cuestin de segundos.

    "utc_offset": -18000

    verified Boolean Cuando es true, indica que el usuario tiene una cuenta verificada.

    "verified": false

    withheld_in_countries

    String Cuando est presente, indica una representacin textual de los cdigos de los pases de dos letras donde este usuario es retenido.

    "withheld_in_countries": "GR, HK, MY"

    withheld_scope String Cuando est presente, indica si el contenido que se est retenido es el de "estado" o "usuario".

    "withheld_scope": "user"

  • 1. Registrar una aplicacio n en Twitter

  • 2. Autenticacio n mediante el protocolo OAuth para Twitter

  • 3. Obtener datos de Search API con twitter4j

  • 4. Obtener datos de Streaming API con twitter4j

  • 5. Almacenando los datos extra dos en MySQL