Consultando Crunchbase con Python

Por mi trabajo, siempre estoy pendiente de lo que sucede en Crunchbase (de hecho, estoy suscripto a su feed de páginas recientes). Con tantas empresas y personas yendo y viniendo por Twitter, se transformó en una fuente de consulta permanente.

¿Puedo consultar Crunchbase con Python? La respuesta es obvia :-)

Crunchbase tiene una API muy interesante que devuelve resultados en formato JSON. Pueden encontrar documentación sobre su uso en crunchbase-api.

Para este programa estoy usando la librería simplejson (sudo apt-get install python-simplejson)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import sys, urllib, simplejson
 
api = 'http://api.crunchbase.com/v/1/search.js?%s'
 
def main():
    if len(sys.argv) >= 2:
        q = ' '.join(sys.argv[1:])
        source = urllib.urlopen(api % urllib.urlencode({'query': q}))
        results = simplejson.loads(source.read())
        if results['results']:
            for r in results['results']:
                name = r.get('name')
                if not name:
                    name = ' '.join([w.capitalize() \
                        for w in r['permalink'].split('-')])
                print '%s (%s): %s' % (
                    name.strip(),
                    r['namespace'].capitalize(),
                    r['crunchbase_url'],
                )       
        else:
            print 'No results for "%s"' % q
    else:
        print 'Usage: python %s <keyword(s)>' % sys.argv[0]
 
if __name__ == '__main__':
    main()

Aquí tienen algunos resultados:

mahadeva@blue:~$ python crunchbase.py
Usage: python crunchbase.py
mahadeva@blue:~$ python crunchbase.py popego
Popego (Company): http://www.crunchbase.com/company/popego
Santiago Siri (Person): http://www.crunchbase.com/person/santiago-siri

El programa en sí no es muy cómodo de usar (para eso existen los add-ons de de Firefox ;-) ), pero es un buen punto de partida para utilizar, por ejemplo, como una aplicación de Django, o un bot que interactúe con Twitter.