No hay API pública, escribí la mía.
En realidad no es tan difícil; La única parte difícil es asegurarse de minimizar las solicitudes que hago a Quora. No quiero excederme y ser expulsado.
Mi script es del lado del servidor, escrito en PHP, pero estoy usando una tonelada de bibliotecas y servicios que mi compañía desarrolló en PHP y Ruby. Nada de eso importa realmente; es justo con lo que me siento cómodo. Cualquier lenguaje de programación podría hacer esto.
- ¿Cómo perderá el iPhone la batalla contra Android?
- ¿Hay alguna aplicación de reconocimiento de lenguaje de señas que funcione en Android?
- ¿Está Android condenado a la luz de la fragmentación de su dispositivo que frustra a los desarrolladores?
- ¿Cuáles son buenas maneras de Cómo compartir datos entre aplicaciones en diferentes dispositivos usando un Servicio web?
- ¿Cuál es el mejor teléfono inteligente que puedo comprar con Rs.6000?
Todo lo que hago son solicitudes abstractas a las “entidades” de Quora, por ejemplo, sus preguntas, respuestas, usuarios, etc., y almacenarlas en caché localmente. Convenientemente, la mayoría de estos tienen esquemas de URL muy sencillos, como:
http://www.quora.com/ Oliver-Emberton (solicitar un usuario)
http://www.quora.com/ Oliver-Emberton / answers (solicite sus respuestas)
… etc …
Entonces, por mi parte, puedo decir algo como “obtenme información sobre Oliver Emberton”. Eso se convierte en una solicitud web para esa página. Analizo el HTML para localizar las piezas clave de información, haciendo coincidir los patrones de etiquetas y clases. Estos patrones varían según la página, pero generalmente son algo así como “todo el texto dentro de un div con esta clase”. Si inspecciona la fuente de Quora, no es difícil de entender.
Hay pocas advertencias; Quora carga parte del contenido de forma asincrónica (es decir, a través de Javascript, separado de la solicitud de HTML), esto significa que algunas páginas no devuelven ciertas métricas que otros hacen, al menos no todo el tiempo, y significa que no puedo inspeccionar fácilmente los datos históricos eso se sirve a través de AJAX. Actualmente, el diseño simplemente no necesita esos datos, pero finalmente puedo emplear un navegador sin cabeza como PhantomJS para solucionarlo. El selenio es otra opción.
Utilizo un limitador de velocidad para garantizar que todas las solicitudes sean correctas, y he diseñado mi enfoque para utilizar la cantidad mínima de solicitudes que creo que puedo resolver. Por ejemplo: verificaré una respuesta y, dependiendo de qué tan rápido cambie, la revisaré de nuevo con más o menos frecuencia. De esta manera, puedo hacer cosas interesantes, como rastrear cómo se desarrollan las respuestas con el tiempo. Por ejemplo:
Popularidad de la respuesta de Oliver Emberton a ¿Cuáles son las respuestas más votadas en Quora?
(El eje x es minutos)
Algunas personas me han preguntado si podría abrir esto, desafortunadamente no. El código depende en gran medida de las bibliotecas escritas por mi empresa. Sin embargo, es un poco descuidado en este momento, y algún día podría reescribirlo en Ruby o similar.
Actualización: parece que alguien más ya ha hecho esto. Ver: Quora Stalker Ruby Script.
Otra posibilidad es que construya algún tipo de sitio como TwitterCounter para Quora. Sin embargo, es probable que se cierre, y no estoy bendecido con una gran cantidad de tiempo libre para tal proyecto.
Idealmente, Quora lanzará su propia API o comenzará a incorporar sus propios análisis. Entiendo que mencionaron trabajar en una API una vez, pero nunca sucedió.