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.
“¿Listo para intervenir, doctor?” - “Sí, pero primero tengo que operar.”
- Free software: MIT license
- Documentation: https://zoidberg.readthedocs.io..
El objetivo de Zoidberg es ayudar a encontrar información sobre un cirujano. La información que necesita Zoidberg para buscar es:
- Country (i.e. ES para España)
- Doctor (i.e. Margalet)
- Area (i.e. traumatologia)
- Illness (i.e. femoroacetabular)
- output (csv or json file)
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
o clónalo desde:
Cómo utilizarlo
En un proyecto:
O en CLI (Terminal) (Zoidberg te preguntará algunas preguntas para entender qué quieres buscar):
Cómo funciona
El proyecto de Zoidberg está organizado de la siguiente manera:
.zoidberg.py
es el archivo que contiene la clase Zoidberg y ejecuta unCrawlerRunner
junto con los parametros country, doctor, area, illness, output y path..scraper/
es un poryecto de Scrapy llamado scraper..scraper/db
contiene el json de paises con la base de datos de los foros donde buscar (dominios) y sus correspondientes urls para cada enfermedad o dolencia..scraper/pipelines.py
limpia la información scrapeada por el crawler y la escribe en el fichero de salida seleccionado..scraper/settings.py
la configuración por defecto del spider de Scrapy y AUTOTHROTTLE_ENABLED = True para un scrapero responsable..scraper/spiders/
contiene los spiders organizados por país. Todos los spiders heredan deZoidbergSpider
.
Próximos pasos
Todavía que mucho trabajo por hacer…
- CLI: Cambiar de argparse a click.pocoo.org.
- Devolver una lista de los paises disponibles.
- Devolver una lista de las áreas disponibles para un país.
- Devolver un lista de las dolencias disponibles para un área.
- Añadir palabras clave o dolencia para buscar.
- Buscar a un doctor para cada área o dolencia.
- Tests concienzudos.
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: