Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Los Símbolos Feos

Yo res­pon­dí ti­po "si al­gu­na vez ne­ce­si­to lle­var gen­te a una ba­ta­lla, voy a usar una ban­de­ra fea (po­ne­le, una mu­li­ta er­gui­da), así al me­nos voy a sa­ber que es­tán ahí por­que quie­ren y no por el ma­rke­tin­g". Lo que es pro­ba­ble­men­te una co­sa bas­tan­te pe­lo­tu­da aún pa­ra mis stan­dar­d­s, pe­ro:

  1. Es­­ta­­ba en 3er fe­r­­net

  2. Es­­ta­­ba tro­­­llean­­do al pi­­be

  3. Drunk tro­­­ll was drunk

  4. Me­­dio que lo creo

Es una es­tu­pi­dez por­que só­lo acep­tar la ayu­da de los cre­yen­tes y no tra­tar de ha­cer que los de­más crean es una bue­na ma­ne­ra de ase­gu­rar­se que con­tás con tan só­lo una en­fer­vo­ri­za­da mi­no­ría de par­ti­da­rios (in­ser­tar chis­te de "El año de Li­nux en el es­cri­to­rio­").

Pe­ro me­dio que lo creo, por­que ser feo y que te quie­ran es más cá­li­do que que te quie­ran cuan­do sos lin­do, y por­que ser com­pli­ca­do y apre­cia­do es más va­lio­so que ser ac­ce­si­ble y apre­cia­do. Pe­ro eso só­lo fun­cio­na si sos di­fí­cil de ver­da­d, y no a pro­pó­si­to, por­que eso es po­se. Y feo en se­rio, no co­mo Char­li­ze The­ron con ma­qui­lla­je de gor­da.

¿En­ton­ce­s, has­ta qué pun­to es uno mo­les­to de for­ma ho­nes­ta? Es­a, ami­gos es la cues­tió­n. Y si al­gu­na vez ten­go que li­de­rar a al­guien es­pe­ro po­der ha­cer­lo co­mo yo mis­mo, y que ellos ven­gan por­que se les can­ta el tu­je­s, no por­que se los di­go.

No es­toy acá pa­ra con­ven­cer gen­te. Es­toy acá pa­ra co­no­cer gen­te.

Raspar no duele

Así que vea­mos el si­tio de las Ted Ta­lks. Tie­nen una lin­da ta­bla con in­for­ma­ción de las char­la­s, por si que­rés ha­cer al­go con ella­s.

¿Y có­mo sa­cás esa in­fo? Ha­cien­do "s­cra­pin­g" de la pá­gi­na. ¿Y có­mo ha­ce­mos eso de for­ma in­do­lo­ra? Con Py­thon y Beau­ti­ful­Sou­p.

from BeautifulSoup import BeautifulSoup
import urllib

# Leemos toda la página
data = urllib.urlopen('http://www.ted.com/talks/quick-list').read()
# La parseamos
soup = BeautifulSoup(data)

# Busco la tabla con la data
table = soup.findAll('table', attrs= {"class": "downloads notranslate"})[0]
# Tomo las filas, salteando la primera
rows = table.findAll('tr')[1:]

items = []
# Para cada fila saco los datos
# Y la guardo en algún lado
for row in rows:
    cells = row.findAll('td')
    item = {}
    item['date'] = cells[0].text
    item['event'] = cells[1].text
    item['title'] = cells[2].text
    item['duration'] = cells[3].text
    item['links'] = [a['href'] for a in cells[4].findAll('a')]
    items.append(item)

¡Y ya es­tá! Sor­pren­den­te­men­te in­do­lo­ro.

Escribir, y qué escribir.

Por otro la­do, es­cri­bí una se­rie muy po­pu­lar de pos­ts, lla­ma­da "P­y­Qt en Ejem­plo­s", que (a­di­vi­nen) lle­va mu­cho tiem­po es­tan­ca­da.

El pro­ble­ma con el li­bro es que tra­té de cu­brir de­ma­sia­do te­rreno. Ter­mi­na­do se­ría un li­bro de 500 pá­gi­na­s, y eso in­clu­ye es­cri­bir me­dia do­ce­na de apps de ejem­plo, al­gu­nas de ellas en áreas en las que no soy ex­per­to.

El pro­ble­ma prin­ci­pal con los pos­ts es que el ejem­plo es pe­do­rro (¡a­pp de TO­DO­s!) y ex­pan­dir­la es abu­rri­do.

¡Qué me­jor ma­ne­ra de re­sol­ver el pro­ble­ma que mez­clar las dos co­sas!

Voy a de­jar Py­thon No Muer­de co­mo es­tá, y voy a ha­cer un li­bro nue­vo, que se lla­me Py­Qt No Muer­de. Va a man­te­ner el tono y el len­gua­je del an­te­rio­r, y va a com­par­tir va­rios ca­pí­tu­lo­s, pe­ro se va a en­fo­car en de­sa­rro­llar apps Py­Q­t, en vez de apun­tar a me­tas de­ma­sia­do am­bi­cio­sas. Es­pe­ro que sea de unas 200 pá­gi­na­s.

Ten­go per­mi­so de la su­pe­rio­ri­dad (mi se­ño­ra) pa­ra tra­ba­jar en es­to un par de ho­ras al día tem­prano a la ma­ña­na. Tal vez avan­ce, tal vez no. Co­mo siem­pre, yo no pro­me­to, ex­pe­ri­men­to.


Contents © 2000-2023 Roberto Alsina