¿Cuál es la mejor manera de raspar datos anidados / jerárquicos de sitios web?

Divulgación: Trabajo en Scrapinghub, los principales encargados de Scrapy.

Te sugiero que uses Scrapy. Es un proyecto de código abierto probado en batalla utilizado por muchas compañías.

Scrapy trata todos los problemas posibles que puede enfrentar al usar una solución personalizada, como una biblioteca de red y un combo de analizador XML.

Scrapy hace todo el trabajo en red por usted: maneja las redirecciones (mediante códigos HTTP 3xx o mediante meta actualización HTML), reintenta las solicitudes fallidas de forma personalizable, ajusta su frecuencia de rastreo automáticamente en función del servidor web y las cargas del rastreador (AutoThrottle), respeta los robots. txt, si lo desea, conserve las sesiones automáticamente, entre otras cosas que tomaría mucho tiempo desarrollar usted mismo. Scrapy tiene valores predeterminados agradables y casi todo es personalizable si necesita algo diferente.

La arquitectura de Scrapy es altamente extensible a través de: middlewares, tuberías y extensiones. Hay muchos oficiales y accionados por la comunidad para hacer cosas como proxy y rotación de agente de usuario, almacenar datos en bases de datos, etc.

Con Scrapy, extrae información de sitios web utilizando selectores CSS o XPath. También puede usar cualquier otra biblioteca de análisis como BeautifulSoup con Scrapy, aunque estoy bastante seguro de que no la necesitará.

La infraestructura no es un problema para los usuarios de Scrapy. Implementan y ejecutan sus rastreadores de forma gratuita utilizando Scrapy Cloud.

Puede aprender Scrapy consultando la documentación oficial, siguiendo algunos de los muchos tutoriales que se encuentran en la web o en el libro Learning Scrapy.

Si alguna vez tiene problemas con algunos sitios web difíciles de rastrear, puede obtener ayuda del canal oficial de IRC, StackOverflow o de la lista de correo de usuarios descuidados. También hay una lista de empresas que brindan soporte comercial para Scrapy, si alguna vez lo necesita.

Si está buscando raspar datos a gran escala de fuentes en línea y plataformas de redes sociales, creo que lo que necesitará es un servicio de raspado de datos personalizado, como los Servicios de extracción de datos. La mayoría de las herramientas no podrán hacer frente a los cambios estructurales en las páginas de origen y tampoco serían lo suficientemente flexibles como para acomodar las fuentes que ha mencionado.

Obtenga datos de las API basadas en la web, como las interfaces proporcionadas por las bases de datos en línea y muchas aplicaciones web modernas (como Twitter, Facebook y muchas otras). Esta es una forma fantástica de acceder a datos gubernamentales o comerciales, así como a datos de sitios de redes sociales.

Si necesita extraer datos más complicados y anidados, también puede hacerlo con expertos en extracción de datos.

Si está buscando extraer datos que pueden ser complejos de obtener del sitio y requiere feeds personalizados para cumplir con los requisitos, entonces debe buscar un proveedor de datos como servicio. Un proveedor de DaaS administrado como PromptCloud puede encargarse de los requisitos de adquisición de datos de extremo a extremo, incluidas las actividades de mantenimiento (en caso de cambios en la estructura del sitio web) y el aseguramiento de la calidad.

Siento que estoy escribiendo esta respuesta en cada pregunta jajaja, pero si estás buscando hacer esto programáticamente y eres totalmente nuevo en él, entonces usa Python, Scrapy y Requests. Scrapy tiene un bonito shell interactivo que es genial para jugar.

Sin embargo, no tienes que usar Scrapy. Hago lo mismo usando Python, pyQuery y Requests. El módulo pyQuery me permite hacer jQuery como un recorrido DOM. Sin embargo, se puede hacer lo mismo en cualquier idioma. He usado PHP, C # y NodeJS para raspar sitios web con éxito.

Bueno, podrías probar Octoparse ya que podría extraer datos de casi todos los sitios web. Puede usar la expresión regular para extraer los datos jerárquicos de los sitios web. O puede exportar los datos elegidos a Excel y luego analizarlos en aspecto jerárquico.

Si está interesado, puede consultar los tutoriales en Octoparse para obtener más información.

Python’s Beautiful Soup es algo básico, pero también es muy fácil de adaptar a lo que necesites. Por supuesto, si no te gusta jugar con “ladrillos de lego”, las sugerencias de James Guvna Jeffery pueden estar más en línea con lo que quieres.

Mira en la función preg_match de PHP. Hay un montón de tutoriales disponibles en línea.