Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

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.

jjconti / 2012-02-17 22:27:

No podés traducir scrap :)

Roberto Alsina / 2012-02-18 00:52:

I am a contrarian.

Ale Sarco / 2012-02-17 23:00:

No sería más facil parsear el RSS? 
http://www.ted.com/talks/rss

Roberto Alsina / 2012-02-18 00:52:

Sí, pero no están todas ahí, creo.

Grzegorz Śliwiński / 2012-02-18 10:02:

Have you tried Scrapy? It ahs some nice features to crawl and scrape web pages ;)

Roberto Alsina / 2012-02-18 15:02:

I have heard of scrapy, but have not tried it.


Contents © 2000-2023 Roberto Alsina