El siguiente script en php sirve para obtener la información de un usuario determinado sin la necesidad de parsear HTML. En realidad sí. Parseando HTML pero no el que ven todos los usuarios. Visitando la página de perfil de un usuario en Twitter podremos ver en el código fuente que en el fondo de la página la gente de Twitter imprime un input de tipo hidden con un enorme JSON lleno de información (object). Dentro de este objeto encontraremos el parámetro profile_user que contiene absolutamente toda la información disponible del usuario. Para extraer el valor (the attribute value) nada más simple que utlizar la class DOMDocument de PHP.
$html = file_get_contents("https://www.twitter.com/" . $_REQUEST['username']);
$doc = new DOMDocument();
$doc->loadHTML($html);
$inputs = $doc->getElementsByTagName("input");
foreach ($inputs as $input) {
if ($input->getAttribute('id') == "init-data") {
$user_data = json_decode($input->getAttribute('value'));
}
}
print_r($user_data->profile_user);
El resultado para el usuario... por ejemplo HEMagnetto (el malo de X-Men) sería el siguiente:
stdClass Object
(
[id] => 181330971
[id_str] => 181330971
[name] => Su Majestad, El CEO
[screen_name] => HEMagnetto
[location] =>
[url] => http://elceodelagente.blogspot.com.ar/
[description] => Empresario. Luchador por la libertad de expresión. Emblema de nobleza, honestidad y patriotismo. Soy el falso Magnetto. http://sumajestadelceo.blogspot.com.ar
[protected] =>
[followers_count] => 51558
[friends_count] => 1255
[listed_count] => 582
[created_at] => Sat Aug 21 22:50:48 +0000 2010
[favourites_count] => 131
[utc_offset] => -10800
[time_zone] => Santiago
[geo_enabled] =>
[verified] =>
[statuses_count] => 16387
[lang] => es
[contributors_enabled] =>
[is_translator] =>
[is_translation_enabled] =>
[profile_background_color] => 022330
[profile_background_image_url] => http://abs.twimg.com/images/themes/theme15/bg.png
[profile_background_image_url_https] => https://abs.twimg.com/images/themes/theme15/bg.png
[profile_background_tile] =>
[profile_image_url] => http://pbs.twimg.com/profile_images/1276443020/magnetto-fin_normal.jpg
[profile_image_url_https] => https://pbs.twimg.com/profile_images/1276443020/magnetto-fin_normal.jpg
[profile_link_color] => 0084B4
[profile_sidebar_border_color] => A8C7F7
[profile_sidebar_fill_color] => C0DFEC
[profile_text_color] => 333333
[profile_use_background_image] => 1
[has_extended_profile] =>
[default_profile] =>
[default_profile_image] =>
[following] =>
[follow_request_sent] =>
[notifications] =>
[ext] => stdClass Object
(
[vine_profile] => stdClass Object
(
[err] => stdClass Object
(
[reason] => You are not authorized to request this information.
)
)
)
)