Sunteți pe pagina 1din 17

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. Introduccion 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
contributor

Tipo
Contributors

Descripcin

Ejemplo

Una coleccin de objetos de usuario (por "contributors": lo general slo una) que indica a los [ usuarios que contribuyeron a la autora { del tweet, en nombre del autor de Twitter "id":819797, oficial. "id_str":"819797",

"screen_name":"episod" } ]

coordinates

Coordinates

Representa la ubicacin geogrfica de "coordinates": este Tweet segn lo informado por el { usuario o la aplicacin cliente. La matriz "coordinates": de coordenadas internas se formatea [ como GeoJSON (Longitud, luego de -75.14310264, latitud). 40.05701649 ], "type":"Point" } Hora UTC cuando este Tweet fue creado. "created_at":"Wed Aug 27 13:08:45 +0000 2008"

created_at

String

current_user_ret Object weet

Detalles del Tweet ID del propio retweet "current_user_retweet": { del usuario (si existe) de este Tweet. "id": 26815871309, "id_str": "26815871309" } Las entidades que han sido analizadas por "entities": el texto del tweet. { "hashtags":[], "urls":[], "user_mentions":[] } Indica aproximadamente cuntas veces "favorite_count":1138 este Tweet ha sido favorito por los usuarios de Twitter. Indica si este Tweet ha sido favorito por el "favorited":true usuario que se autentica. Indica el valor mximo parmetro filter_level que puede utilizado En desuso La representacin entera del identificador "id":114749583439036416 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. La representacin de cadena del "id_str":"11474958343903641 identificador nico para este Tweet. Las 6" implementaciones deben usar este en lugar del entero grande.. del "filter_level": "medium" ser

entities

Entities

favorite_count

Integer

favorited

Boolean

filter_level

String

geo id

Object Int64

id_str

String

in_reply_to_scre en_name

String

Si el Tweet representado es una "in_reply_to_screen_name":"t respuesta, este campo contiene el witterapi" nombre de pantalla del autor original del Tweet. Si el Tweet representado es una "in_reply_to_status_id":11474 respuesta, este campo contiene la 9583439036416 representacin entera del original Tweet ID. Si el Tweet representado es una "in_reply_to_status_id_str":"1 respuesta, este campo contiene la 14749583439036416" representacin de cadena del original Tweet ID. Si el Tweet representado es una "in_reply_to_user_id":819797 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. Si el Tweet representado es una "in_reply_to_user_id_str":"81 respuesta, este campo contiene la 9797" representacin en cadena del autor original del Tweet ID. Esto no necesariamente siempre ser el usuario directamente mencionado en el Tweet. Cuando est presente, indica un "lang": "en" 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.

in_reply_to_stat us_id

Int64

in_reply_to_stat us_id_str

String

in_reply_to_user Int64 _id

in_reply_to_user String _id_str

lang

String

place

Places

Cuando est presente, indica que el tweet "place": se asocia (pero no necesariamente se { origina a partir de) un lugar. "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_sensitiv Boolean e

El significado del campo no se refiere a los "possibly_sensitive":true 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. Un conjunto de pares clave-valor que "scopes":{"followers":false} indica la entrega contextual prevista de la que contiene un Tweet. Actualmente utilizado por los productos promocionados de Twitter. Nmero de veces que retweeteado este Tweet. ha sido "retweet_count":1585

scopes

Object

retweet_count

Int

retweeted retweeted_statu s

Boolean Tweet

Indica si este Tweet ha sido retweeteado "retweeted":false por el usuario que se identifica. 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. Utilizado para publicar el tweet, como "source":"\u003Ca una cadena con formato HTML. href=\"http:\/\/itunes.apple.c om\/us\/app\/twitter\/id409 789998?mt=12\" rel=\"nofollow\"\u003ETwitte r for Mac\u003C\/a\u003E" El actual texto UTF-8 de la actualizacin "text":"Tweet Button, Follow de estado. Button, and Web Intents javascript now support SSL http:\/\/t.co\/9fbA0oYy ^TS" Parmetro Indica si el texto se ha "truncated":true truncado, por ejemplo, como resultado de un tweet superior a la longitud de 140 caracteres. Los textos truncados

source

String

text

String

truncated

Boolean

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":"a 9d9f1", "listed_count":9252, "following":true, "profile_background_tile":fals e, "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.co m", "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_ima ge":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":"e 8f2f7", "id":6253282, "follow_request_sent":false, "profile_background_image_u rl_https":"...", "profile_background_image_u rl":"...", "profile_image_url_https":"..." }

withheld_copyrig Boolean ht

Cuando est presente y se establece en "withheld_copyright": true "true", indica que esta pieza de contenido se ha retenido debido a una reclamacin de la DMCA. "withheld_in_countries": ["GR", "HK", "MY"] "withheld_scope": "status"

withheld_in_cou ntries withheld_scope

Array of String String

CAMPO
contributors_en abled

Tipo
Boolean

Descripcin

Ejemplo

Indica que el usuario tiene una cuenta en "Contributors_enabled": false el "modo colaborador" activado, lo que permite Tweets emitidos por el usuario para ser coescrito por otra cuenta. Rara vez es cierta. Fecha y hora UTC en que la cuenta de "Created_at": "Lun Nov 29 usuario se cre. 21:18:15 +0000 2010" Cuando es true, indica que el usuario no "default_profile": false ha alterado el tema o el fondo de su perfil de usuario. Cuando es true, indica que el usuario no "default_profile_image": false ha subido su propio avatar y por defecto se utiliza un huevo como avatar. Cadena (UTF-8) definida por el usuario "description":"The Real que describe su cuenta. Twitter API." Entidades que han sido analizados de los "entities": { campos url o descripcin definidos por el "url": { usuario. "urls": [ { "url": "http:\/\/dev.twitter.com", "expanded_url": null, "indices": [0, 22] } ] }, "description": {"urls":[] } } Numero de tweets del usuario que han "favourites_count": 13 sido favoritos. Cuando es true, indica que el usuario que "follow_request_sent":false se identifica ha emitido una solicitud para

created_at default_profile

String Boolean

default_profile_i Boolean mage description entities String Entities

favourites_count Int follow_request_ sent Type

seguir a esta cuenta de usuario protegida.

following

Boolean

Cuando es true, indica que el usuario que "following":true 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. Nmero de seguidores que esta cuenta "followers_count": 21 tiene actualmente. Bajo ciertas condiciones de presin, este campo indicar temporalmente "0". Nmero de usuarios que esta cuenta est "friends_count": 32 siguiendo. Bajo ciertas condiciones de presin, este campo indicar temporalmente "0". Cuando es true, indica que el usuario ha "geo_enabled": true 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. Representacin entera del identificador "id":6253282 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. La representacin de cadena del "id_str":"6253282" identificador nico para este usuario. Cuando es true, indica que el usuario es "is_translator": false un participante en Twitter de translator community. El BCP 47 cdigo para el idioma de la "lang": "en" interfaz de usuario. Puede o no tener "lang": "msa" nada que ver con el contenido de sus "lang": "zh-cn" tweets. ---------------------------------"listed_count":9274

followers_count

Int

friends_count

Int

geo_enabled

Boolean

id

Int64

id_str is_translator

String Boolean

lang

String

listed_count location

Int String

Ubicacin definida por el usuario para el "location":"San Francisco, CA" 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.

name

String

El nombre del usuario, ya que hemos "name":"Twitter API" definido. No necesariamente se refiere al nombre de una persona. Por lo general un lmite de 20 caracteres, pero sujeta a cambios. En desuso "profile_background_color":"e 8f2f7"

notifications

Boolean

profile_backgrou String nd_color profile_backgrou String nd_image_url

El color hexadecimal elegido por el "profile_background_color":"e usuario para su fondo. 8f2f7" Una direccin URL basada en HTTP que "profile_background_image_u apunta a la imagen de fondo que el rl": usuario ha subido a su perfil. "http:\/\/a2.twimg.com\/prof ile_background_images\ /229557229\/twitterapibg.png" Una direccin URL basada en HTTPS que "profile_background_image_u apunta a la imagen de fondo que el rl_https": usuario ha subido a su perfil. "https:\/\/si0.twimg.com\/pr ofile_background_images\ /229557229\/twitterapibg.png" -------------------------------------------------------- "profile_background_tile":fals ----------------------------e -------------------------------------------------------- "profile_banner_url": ----------------------------"https://si0.twimg.com/profil e_banners/819797/13481028 24" Una direccin URL basada en HTTP que "profile_image_url": apunta a la imagen del avatar del usuario. "http:\/\/a2.twimg.com\/prof ile_images\/1438634086\ /avatar_normal.png" Una direccin URL basada en HTTPS "profile_image_url_https": sealando imagen de avatar del usuario. "https:\/\/si0.twimg.com\/pr ofile_images\/1438634086\ /avatar_normal.png" Color hexadecimal que el usuario ha "profile_link_color":"0094C2" optado para mostrar los vnculos en su interfaz de usuario. -------------------------------------------------------- "profile_sidebar_border_color ----------------------------":"0094C2" -------------------------------------------------------- "profile_sidebar_fill_color":"a ----------------------------9d9f1" El color hexadecimal que el usuario ha "profile_text_color":"437792" elegido para mostrar el texto en su interfaz de usuario.

profile_backgrou String nd_image_url_ht tps

profile_backgrou Boolean nd_tile profile_banner_ url String

profile_image_u rl

String

profile_image_u rl_https

String

profile_link_colo String r

profile_sidebar_ border_color profile_sidebar_ fill_color profile_text_col or

String String String

profile_use_back Boolean ground_image protected Boolean

-------------------------------------------------------- "profile_use_background_ima ----------------------------ge":true Cuando es true, indica que el usuario ha "protected": true optado por proteger a sus Tweets. El nombre de pantalla o alias con el que el "screen_name":"twitterapi" usuario se identifica. screen_names son nicas, pero sujeta a cambios. Utilice id_strcomo un identificador de usuario siempre que sea posible. -------------------------------------------------------- "show_all_inline_media": ----------------------------false -------------------------------------------------------- "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",

screen_name

String

show_all_inline_ Boolean media status Tweets

"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": "<a href=\"http://sites.google.co m/site/yorufukurou/\" rel=\"nofollow\">YoruFukuro u</a>", "in_reply_to_status_id": 192290470427246594 },

statuses_count time_zone

Int String

Nmero de tweets (incluyendo retweets) "statuses_count": 42 emitido por el usuario. Una cadena que describe la zona horaria "time_zone":"Pacific Time (US del este usuario declara a s mismos en su & Canada)" interior. Un URL proporcionada por el usuario en "url":"http:\/\/dev.twitter.co asociacin con su perfil. m" Desplazamiento de GMT / UTC en "utc_offset": -18000 cuestin de segundos. Cuando es true, indica que el usuario "verified": false tiene una cuenta verificada. Cuando est presente, indica una "withheld_in_countries": "GR, representacin textual de los cdigos de HK, MY" los pases de dos letras donde este usuario es retenido. Cuando est presente, indica si el "withheld_scope": "user" contenido que se est retenido es el de "estado" o "usuario".

url utc_offset verified

String Int Boolean

withheld_in_cou String ntries

withheld_scope

String

1. Registrar una aplicacion en Twitter

2. Autenticacion 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 extrados en MySQL