Evaluando propuestas

Desarrollador Python con Scrapy (experto)

Publicado el 16 Julio, 2024 en Programación y Tecnología

Sobre este proyecto

Abierto

Busco un desarrollador Python con extensa experiencia en scraping con Scrapy para dar apoyo y desarrollar evolutivos de una aplicación existente.
Importante: Descartaré automaticamente a cualquier candidato que pregunte algo qu esté explicado en este texto, al demostrar poco interés en el proyecto o poca comprensión lectora.

Importante 2: no busco alguien que sepa extraer por web scraping un monton de datos de una web determinada. Repito. No busco eso. Leed con detenimiento. Busco un desarrollador Python para realizar ajustes en una aplicación existente que, por medio de scraping, recupera cierta información concreta a demanda de determinadas webs.

Por las características del proyecto, los ajustes constantes y las nuevas funcionalidades requeridas constantemente, buscamos también alguien con posibilidad de establecer una colaboración a medio o largo plazo con una dedicación de 10 o 20 horas semanales (y con picos puntuales de más dedicación).

En cualquier caso, la tarea para la que busco desarrollador ahora mismo es la siguiente. Tengo un proyecto tecnologico basado en web scraping. Pero es scraping un poco especial porque implica atender solicitudes que nos envían desde un sistema externo para obtener determinados documentos personales obtenidos de paginas guvernamentales (navegando a través de ellas identificado con el Certificado Digital de una persona).
El scraping se realiza utilizando Scrapy, pero las llamadas HTTP se realizan usando una librería proporcionada por nuestro cliente que (utilizando cUrl especialmente parametrizado en su interior para autenticar con PKCS11) ejecuta las llamadas HTTP autenticadas para poder navegar por esas webs guvernamentales (a efectos de desarrollo, la capa de autenticación no es particularmente relevante. SImplemente hay que saber que las llamadas HTTP hay que hacerlas sí o sí a través de la librería facilitada por el cliente.. Y no podemos usar Selenium ni otras alternativas de navegación. Solo postprocesado de las responses con Scrapy o similar).

Los procesos de scraping consisten en navegar por ciertas paginas webs, rellenando formularios para obtener acceso a ciertos documentos, descargarlos y subirlos a un sistema externo a través de la llamada a un endpoint de una API concreta.

Las páginas por las que debemos navegar a veces son de navegación sencilla (HTML, enviando datos por formularios, etc..) Y en otros casos, como la que nos ocupa para este proyecto, implica interactuar con aplicaciones javascript para conseguir los mismos resultados (navegar por la web, rellenar formularios de solicitud y descargar documentos que se proporcionan tras rellenarlos).. Por tanto hay que tener la experiencia y la habilidad para gestionar el scraping tanto web sencillo como interactuando con javascript (entendiendo que como las llamadas HTTP deben realizarse necesariamente con la librería de nuestro cliente no podemos usar cualquier framework como Selenium.. Porque no es compatible con la capa de autenticación por certificado PKCS11 que manejamos. )
Adjunto ejemplo de uno de los spiders que tenemos ahora mismo.

La aplicación está ahora mismo en producción y procesando peticiones de forma regular (procesa un centenar de peticiones únicas al día. No es un sistema de webscraping de captura masiva de datos. Se obtienen documentos concretos a demanda).

Pero tenemos en concreto un spider que ha dejado funcionar porque la web gubernamental ha pasado de navegación http normal (desde que te autenticas hasta que obtienes el documento requerido, pasando de url a url) a una aplicación javascript que navega y carga contenidos con llamadas ajax.
La primera tarea (que no la única, pues esto pretende ser una colaboración a largo plazo) sería reconstruir el spider para que pueda obtener la misma información que antes obtenía, pero siguiendo la nueva navegación de la web que lo proporciona.

Contexto general del proyecto

Aplicación existente en Python/Django que realiza acciones de scraping en ciertas webs para obtener, a demanda, 1 a 1, ciertos documentos de ciertas personas (para lo cual nos autenticamos en ellas con un Certificado Digital PKCS11 en cloud, realizando obligatoriamente la navegación y las llamadas HTTP a través de una librería proporcionada por nuestro cliente)

Categoría Programación y Tecnología
Subcategoría Otros
Tamaño del proyecto Medio
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite

Plazo de Entrega: No definido

Habilidades necesarias

Otros proyectos publicados por J. N.