Aniversario Perú Miércoles, 16 abril 2014

Jalando datos de Google Scholar a la mala

Aniversario Perú

soy Biólogo, PhD. Hobbies: investigador en usos de las TIC, periodismo de datos, nerd, etc.
Fuente WikiCommons http://bit.ly/1jLtiMi

Short-nosed Indian Fruit Bat (Cynopterus sphinx). Fuente WikiCommons http://bit.ly/1jLtiMi

En posts anteriores he manifestado que uno de mis sitios web favoritos es Google Scholar (GS).

GS es un proyecto de Google que consiste en ser un buscador web especializado en literatura científica en varios formatos y diversas áreas de investigación. Como sabemos, los científicos publican los resultados de sus investigaciones en revistas científicas. Google Scholar los indexa y pone a tu disposición enlaces de los artículos científicos y en muchos casos incluye el PDF para que lo descargues y leas.

GS es como Google, pero más especializado. Además tiene bastante información interesante. Por ejemplo, GS lleva la cuenta de aquellos artículos que aparecen citados en la lista de referencias de cada uno de los papers indexados.

Si tu artículo es muy chévere, será citado por muchos otros artículos y será considerado de alto impacto. Esto te conviene ya que puede subirte puntos cuando postules a trabajos o becas. Por lo general, mientras más citaciones tengan tus trabajos mejor. A menos que tu trabajo sea una bassssura y todo mundo lo cite solo para rajar.

Problemas de GS

GS funciona en base a algoritmos que salen a la internet en búsqueda de artículos científicos para indexar. Una falla común de estos algoritmos es que frecuentemente indexan el mismo artículo si es que está colgado en sitios web diferentes como la página web personal del investigador, repositorio de la revista científica y alguna red social (ejemplo ResearchGate y AcademiaEdu).

Estos duplicados causan que el número de citaciones de tus papers pueda inflarse, parecer que te citan mucho y afectar los índices de impacto derivados del número de citaciones de cada paper.

Además GS indexa todos los papers que encuentre en servidores pertenecientes a universidades y ya se ha demostrado que es posible hacer trampa e incrementar artificialmente el número de citaciones si es que creas papers ficticios con hartas citaciones bamba (http://arxiv.org/abs/1212.0638).

Para evitar este tipo de errores, se me ocurrió descargar todas las citaciones a los papers de mis colegas para almacenarlas en una base de datos local y llevar un mejor control sobre el número de citaciones. Pero GS no tiene API, o sea que no tiene interfaz para poder descargar datos. Muchos sospechan que la falta de API es adrede para que nadie se pueda aprovechar sus datos.

Solución

Ya que no hay API, es posible jalar los datos a la mala, usando la técnica conocida como screen scrapping. Esta técnica consiste en tratar de descargar datos estructurados a partir del código HTML de las páginas de GS.

Para esto es necesario programar un scrapper que se encargue de descargar las páginas y que trate de cosechar la información.

Entonces me fabriqué un scrapper usando la excelente herramienta llamada Scrapy. Este software te permite crear spiders que se encarguen de hacer el trabajo duro y difícil. Tú solo debes indicar a Scrapy las páginas que deban ser descargadas y procesadas, además de la información que necesite ser cosechada.

Más problemas

A Google no le gusta soltar su información tan fácilmente y GS hace esfuerzos denodados para defenderse de scrappers y spiders. Si GS se da cuenta que estas usando un scrapper, te bloquearán tu número IP al toque. Tendrás que esperar varias horas para que te desbloqueen y puedas acceder otra vez a GS.

Para evitar ser bloqueado puedes usar la excelente herramienta llamada Crawlera. Crawlera tiene como función proveer diferentes números IP para tu spider. Al usar Scrapy en combinación con Crawlera es posible engañar a Google y hacerle creer que los pedidos que hace tu spider provienen de diferentes números IP, diferentes ubicaciones geográficas. Google asumirá que estos pedidos son realizados por diferentes usuarios y no podrá bloquear tu spider.

Software MADE IN UTERO

Este spider está programado en el lenguaje de programación Python y puedes acceder al código fuente desde la cuenta del Útero de Marita en Github. Github es una red social que sólo sirve para compartir código de programación y no se puede compartir fotos de gatitos :-(.

Ejemplo de uso

Digamos que estamos interesados en el estilo de vida de murciélagos y queremos descargar las referencias bibliográficas que citen a un paper en particular:

2014-04-16_bat

Es necesario obtener el link de GS donde aparezcan todas las referencias citando a nuestro paper de interés:

2014-04-16_bat_citations

También es importante obtener el número DOI de nuestro paper de interés. Una vez que tenemos estos datos solo es cuestión de correr nuestro scrapper, el cual tiene el imaginativo nombre de GS_Scrapper. Para eso usamos el siguiente comando:

python get_references.py -d 10.1371/journal.pone.0007595 -l 'http://scholar.google.fi/scholar?cites=13499177678328007172&as_sdt=2005&sciodt=0,5&hl=en'

Luego de unos minutos el resultado será una bonita página HTML para que puedas incluir en tu sitio web. Si no te gusta el diseño puedes copiar solo la sección donde aparecen los 5 papers que lo citan y pegarla sobre alguna otra plantilla HTML de tu preferencia.

2014-04-16_out_page

Cuando llega la hora de buscar chamba, puede ser buena idea tener un sitio web bien nutrido que muestre el número de papers que citan tus trabajos y demuestre que eres científico influyente.

PS. Aquí el artículo original incluyendo un vídeo de dos murciélagos realizando cópula y sexo oral.

Aquí el link del vídeo para que rompas tu ojo.

Aniversario Perú

soy Biólogo, PhD. Hobbies: investigador en usos de las TIC, periodismo de datos, nerd, etc.