Zoidberg: Un scraper en Python para buscar opiniones de cirujanos

¿Listo para intervenir, doctor? - Sí, pero primero tengo que operar.

Python Data

Motivatión

Tengo, con 34 años, el llamado choque o pinzamiento femoroacetabular. Suele afectar la cadera del adulto joven y ocurre cuando la cabeza esférica del femur roza o no se mueve de forma normal en la cavidad acetabular. Wikipedia.

La única solución a largo plazo es quirúrgica. Y como todo el mundo, me gustaría que el mejor cirujano me “abriese” la cadera. El problema: Es complicado encontrar opiones reales de cirujanos, incluso tras una búsqueda concienzuda en Google. Además, cuando encuentras un foro en el que la gente habla sobre la operación en la que estás interesado, es difícil encontrar información especifica, en este caso, opiniones sobre un cirujano.

Por eso, decidí crear un pequeño scraper, que buscará cualquier comentario en el que se mencione a un doctor y devolverá un archivo csv o json para poder leer las opiniones sobre este cirujano.

Introducción

He liberado el código (en una versión muuuy alpha), siendo posible añadir más fuentes a las búsquedas u otras enfermedades o dolencias . Actualmente solo busca cirujanos españoles para el choque femoroacetabular.

pypi Travis Build Documentation Status

“¿Listo para intervenir, doctor?” - “Sí, pero primero tengo que operar.”

Dr John Zoidberg

El objetivo de Zoidberg es ayudar a encontrar información sobre un cirujano. La información que necesita Zoidberg para buscar es:

Tecnología

He usado Python 3, aunque (pero no lo he probado) probablemente funcione con Python 2 y Scrapy, un scraper abierto. Para crear el paquete de Python he utilizado cookiecutters. Hay muchas plantillas que puedes utilizar para cualquier tipo de proyecto como standard Python (el que he utilizado), Django … También un recurso interesante es la guía de Jeff Knupp llamada open sourcing a python project the right way.

Cómo instalarlo

pip install dr-zoidberg

o clónalo desde:

git clone git@github.com:ginopalazzo/zoidberg.git

Cómo utilizarlo

En un proyecto:

from zoidberg.zoidberg_main import Zoidberg

z = Zoidberg(country='es', doctor='margalet', area="traumatologia", illness="femoroacetabular", path='test.csv', output='csv')
z.conf()
z.run()

O en CLI (Terminal) (Zoidberg te preguntará algunas preguntas para entender qué quieres buscar):

zoidberg

Cómo funciona

El proyecto de Zoidberg está organizado de la siguiente manera:

.
├── __init__.py
├── scraper
│   ├── __init__.py
│   ├── db
│   │   └── es
│   │       └── es_db.json
│   ├── items.py
│   ├── middlewares.py
│   ├── pipelines.py
│   ├── settings.py
│   └── spiders
│       ├── __init__.py
│       ├── es_spider.py
│       └── zoidberg_spider.py
├── zoidberg.py

Próximos pasos

Todavía que mucho trabajo por hacer…

Conclusiones

A pesar de funcionar, Zoidberg es todavía una pequeña langosta que necesita mucha mejora, aunque funciona perfectamente para el primer propósito para para la que fue concebida; encontrar un buen doctor para mi artroscopia de cadera.

Margales se supone que es el mejor especialista español en el choque femoroacetabular, pero después de utilizar Zoidberg, me di cuenta de que hay mucha gente quejándose de la nueva técnica que utiliza llamada “out-inside”. Ni una queja del doctor Pérez Carro, mi nuevo cirujano de cadera.

Puedes ver las diferencias que encontró Zoidberg entre los dos doctores: