¿Cómo podemos recopilar grandes datos de Internet en general?

Editar: Esta pregunta se tituló originalmente: ¿cómo podemos recopilar grandes datos de Internet en general? Mi respuesta fue en respuesta a eso.

Es imposible buscar en todo Internet , incluso Google solo indexa alrededor del 12% de Internet, según las mejores estimaciones. Hay regiones enteras que son inaccesibles para los rastreadores: los sitios web protegidos por HTTPS, por ejemplo, tienen mucho cuidado para garantizar que los rastreadores de motores de búsqueda no puedan ingresar, mientras que Dark Web, como se llama la porción gigante no indexada de la web, es un semillero de actividades criminales ilegales y francamente peligroso para pasear, nunca se sabe qué tipo de virus malicioso puede descargar accidentalmente.

Cómo funciona la recopilación de datos y por qué lo que estás preguntando es imposible

Dado que ha preguntado cómo recopilar información de Internet en general, esto es lo que debe comprender sobre cómo los rastreadores, los caballos de batalla de los motores de búsqueda, trabajan para comprender por qué lo que está pidiendo está más allá de nuestra capacidad:

  • Los rastreadores son simples: son programas que comienzan en una página web, recopilan todas las URL de la página web, visitan cada URL a su vez, recopilan todas las URL en esa URL y se repiten. Cómo lo hacen no es tan interesante: hay muchas herramientas, como cURL, que pueden obtener páginas para usted y herramientas como BeautifulSoup que pueden ‘leer’ páginas a un rastreador. Es posible que eliminen contenido de la página web, o simplemente estén contentos de mantener una lista de URL; en cualquier caso, es fácil imaginarlo usando este gráfico:

    Cada nodo / valor en este gráfico representa una página web (por ejemplo). Una de las formas en que puede funcionar un rastreador es la siguiente: un rastreador comienza en la página web marcada ‘Mundo’, y señala que tiene URL que apuntan a Italia, Zimbabwe, Australia, China y Honduras, respectivamente. Supongamos que el rastreador está diseñado para que siempre elija la primera URL que encuentre para visitar, en nuestro gráfico, que correspondería a Italia. Multa. Va a Italia, ve que tiene vínculos con Venecia, Florencia, etc., los visita a todos, y solo una vez que toda esta sucursal se ha agotado, finalmente vuelve al principio e intenta hacer lo mismo con Zimbabwe. En ciencias de la computación, esto se llama búsqueda de profundidad primero.

    (Otra forma en que un rastreador puede visitar páginas web es visitar Italia, luego China, luego Honduras, y luego pasar a Venecia, Florencia …, Hazare, Hwange, … Shanghai … etc. Básicamente, puede visitar todos los nodos en cada nivel antes de pasar al siguiente nivel. Esto se llama búsqueda de Breadth-first, y es la forma preferida para que los desarrolladores sensibles creen sus rastreadores, por las razones que se explican a continuación).

    En todos los niveles, un rastreador necesita acceso a una base de datos de URL recopiladas. Esta colección de URL debe crearse de manera sensata para que pueda escalar de manera bastante rápida y fácil para alojar lo que necesita.

  • Ahora, suponga que desea construir rastreadores que puedan raspar todo Internet. Hemos estado trabajando hasta ahora con un gráfico muy pequeño y finito, pero ¿qué haces cuando el gráfico se vuelve extremadamente grande? Google afirma que puede indexar al menos un billón de páginas web, pero si eso es solo el 12% de Internet, eso significa que hay alrededor de 8.3 billones de páginas.

    Para poder albergar este tipo de capacidad, necesita mucho espacio de almacenamiento. Si cada sitio web tiene solo 1 KB, eso significa que necesita 1 exabyte de espacio para almacenarlo de alguna manera. En otras palabras, necesita 1,000,000,000 de gigabytes de espacio. Para poner esto en perspectiva, el mayor almacén de datos en construcción es el almacén de datos de IBM, que puede albergar 120 petabytes, una décima parte de un exabyte. (120 petabytes: IBM construye la matriz de almacenamiento de datos más grande de la historia).

  • ¿Quizás hay formas de evitar esto? Tal vez haya oído hablar de la computación en la nube / distribuida, donde emplea las computadoras de otras personas de forma remota para obtener memoria y espacio extra. Esto le permite ampliar sus limitaciones de memoria: en lugar de un gran banco de memoria en una computadora, usa poca memoria de muchas otras computadoras que juntas suman una memoria más grande. Google es quizás un líder mundial en este tipo de cosas, donde trabajar con big data es parte integrante de la vida diaria. Sin embargo, incluso con ese tipo de poder, ArsTechnica afirma que Google solo puede procesar 20 petabytes por día. (La gran unidad de disco en el cielo: cómo los gigantes de la Web almacenan grandes, y queremos decir, grandes datos).
  • Hay otros desafíos. Para ser relevante, tendría que realizar un seguimiento de los cambios en un sitio web cada segundo. Eso significa que necesita ejecutar rastreadores millones de veces solo para poder ver qué cambios han ocurrido. Eso consume muchos gastos generales y tiempo: las personas han trabajado en esto de varias maneras, principalmente al ser inteligentes y usar algo llamado una función Hash (o simplemente un hash) para evitar volver a rastrear toda la lista de índices , pero aún necesita una gran cantidad de rastreadores que visiten cada página individualmente para verificar los cambios. Los hashes básicamente le permiten saltar directamente a un nodo visitado en lugar de comenzar desde un nodo raíz y avanzar hacia abajo. Si tiene una gran cantidad de rastreadores, generalmente puede hacerlo con bastante rapidez, pero es imposible hacerlo para los 8,3 billones de URL. La mayoría de las computadoras le permiten ejecutar uno o más rastreadores a la vez usando algo llamado Multithreading (arquitectura de computadora) o multiprocesamiento, donde asigna más de un proceso a otro núcleo de su computadora, pero hay un límite superior para la cantidad de rendimiento que puede exprimir de un proceso adicional. No tengo números conmigo, pero puedo decir con seguridad que es imposible tener un cuatrillón de rastreadores funcionando simultáneamente sin graves problemas de rendimiento.

    Otro desafío es el diseño inteligente de rastreadores. Es muy fácil ignorar un problema como: ¿cómo evitamos que un rastreador quede atrapado en un bucle infinito? Digamos que Venecia tiene un enlace a Zimbabawe, que también tiene un enlace a Venecia. Cuando nuestro rastreador visita Venecia, va a Zimbabwe, donde vuelve a ver Venecia, donde vuelve a Zimbabwe y, bueno, te haces una idea. La clave nuevamente es una función hash, pero diseñar una buena no es fácil de hacer ingenuamente (el núcleo de un hash está en su capacidad para evitar colisiones; básicamente, dos hashes no deben apuntar a la misma URL, y no es eso fácil de hacer en grandes conjuntos de datos), y Google ha pasado por varias iteraciones de su función hash (ha abierto su versión inicial de dicha función cityhash – La familia CityHash de funciones hash – Google Project Hosting hace mucho tiempo, y ha pasó a fuentes mucho mejores).

  • Los rastreadores también pueden causar problemas a otras personas. Si tiene muchos rastreadores yendo a una página web muchas veces, el servidor que aloja la página web puede sobrecargarse de solicitudes y simplemente negarse a responder (esto es un ataque distribuido de denegación de servicio, la forma más fácil de cerrar una página web) . La gente ha tenido problemas con los rastreadores de Google ralentizando rapazmente los tiempos de respuesta de su sitio web, y sé de al menos un caso en el que los rastreadores de Google realmente causaron un evento DDoS inadvertidamente.
  • Otro último problema es que los rastreadores están mejor diseñados para visitar sitios web que no están protegidos por un protocolo de autenticación. Esto significa que muchos sitios web confidenciales (sitios web de bancos donde puede acceder a su cuenta, por ejemplo) no permiten la entrada de rastreadores, por lo que no puede raspar ni recopilar información. Esto también significa que no se puede acceder a un gran número de páginas de Facebook, ya que también está protegido por HTTPS, junto con otros sitios web (por ejemplo, no se puede acceder a Gmail de otras personas).

Resumen

Para raspar toda la web, necesita saber cómo trabajar con rastreadores multiproceso que pueden operar en memoria compartida o distribuida, crear funciones de hashing inteligentes que garanticen que no haya colisiones en todo Internet, tener una arquitectura lo suficientemente grande como para soportar varios cientos de millones de programas simultáneos que no consumen memoria o hacen que el tiempo de respuesta de su computadora disminuya, y sobre todo sea lo suficientemente sensible como para no sobrecargar los servidores. Su sistema tendría que poder expandirse continuamente a medida que se agregan más y más páginas web a la red, y de alguna manera superar las capacidades de los mejores y más brillantes en Google e IBM combinados. Finalmente, tendría que pagar por todo esto; nada de esto es barato de implementar o ejecutar.

¿Ahora ves por qué un programa barato / gratuito es imposible? Cualquiera que pueda lograr esto no tendrá el dinero para poder mantenerlo libre por un período prolongado de tiempo.

Lo que la gente suele hacer en su lugar

Al hablar de todo esto, debe preguntarse: ¿es útil rastrear toda la web ? En realidad no: puede ser útil para un motor de búsqueda, donde se necesita encontrar información, pero para el usuario final, usted, cuyo objetivo declarado es, por ejemplo, descubrir cómo las tendencias en el uso de términos como ‘influenza’ afectan al mundo , muchos de los datos son inútiles. Es posible que esté manteniendo una lista de sitios web que hablan de gacelas, que no tiene nada que ver con la gripe y que son completamente irrelevantes para lo que está buscando. La buena búsqueda a menudo va acompañada de una sólida comprensión de las limitaciones de su método: si desea obtener buenos resultados, debe tener una mejor metodología.

Por lo tanto, las personas usan datos disponibles públicamente recopilados de sitios de redes sociales, sitios donde las personas realmente van a hablar o discutir eventos. Twitter permite a las personas recopilar y cosechar tweets de muchas personas, lo que Facebook también permite que las aplicaciones web externas recopilen (con los permisos apropiados del usuario) textos de estado publicados por personas. Es mucho más sensato comenzar con lo que estás buscando y luego ir a cazar en lugares con más probabilidades de tener eso que ir a cazar todo, y luego encontrar algo que buscar.

Que yo sepa, no hay herramientas gratuitas, baratas y fáciles para poder consultar Twitter y / o Facebook a la vez. Twitter y Facebook proporcionan API (interfaces) para que su aplicación o programa recopilen datos; no hay paneles ni consolas en los que pueda escribir su consulta y obtener una respuesta instantánea. Tienes que dedicar lo mínimo necesario para aprender a construir herramientas que se conecten a Facebook.

Entonces, ¿cómo construiría algo como esto?

He esbozado la teoría y los problemas básicos de la informática detrás de la construcción de una buena programación de eliminación de datos: cualquier implementación específica requerirá un conocimiento profundo de un lenguaje de programación y un acceso adecuado a las herramientas que pueden hacer el trabajo duro por usted.

¿Algún consejo? Use una combinación de Python, Spark y Amazon AWS para obtener mejores resultados. Python tiene el módulo de solicitudes, que puede buscar páginas web para usted, y el módulo BeautifulSoup, que es increíblemente útil para analizar una página web (sin mencionar que Python es fácil de aprender y puede optimizarse para un trabajo realmente rápido). Spark es un motor distribuido que le permite multiplicar la cantidad de rastreadores que usa y viene incluido con un buen marco para almacenar memoria y expandirla cuando sea necesario. Finalmente, Amazon AWS le permite ejecutar una gran cantidad de computadoras a la vez (un clúster), entre las cuales Spark divide la memoria y asigna a cada una una URL diferente. Necesitará una buena base de datos: normalmente recomendaría MongoDB, pero tengo la buena autoridad de que realmente no puede escalar para cumplir con los desafíos de eliminar varios millones de páginas web, por lo que tendrá que buscar diferentes opciones y calcular cosas fuera usted mismo

Sin embargo, si simplemente desea conectarse a la base de datos de Twitter / Facebook utilizando su API, eso es mucho más fácil de hacer. Hay muchas preguntas y preguntas de StackOverflow que pueden guiarlo a través de ese proceso.

¡Buena suerte!

More Interesting

¿Qué tan confiables son las estadísticas oficiales en Brasil?

Cómo realizar prácticas como analista de datos en un equipo deportivo

¿Cuáles son los beneficios de los diferentes tipos de esquemas en el contexto del almacenamiento de datos?

¿Por qué se prefiere Mechanical Turk sobre Crowdflower para obtener datos etiquetados para Machine Learning?

¿Cuáles son las principales herramientas para la ciencia de datos?

¿Qué oportunidades de carrera en ciencia de datos y aprendizaje automático existen en Snapchat?

¿Cuándo debemos crear un lago de datos?

¿Cómo debo aprender ciencia de datos y aprendizaje automático?

¿Cómo convertirse en un científico de datos financieros? Quiero aplicar programación, matemáticas y finanzas en un solo trabajo. Tengo una licenciatura en informática, soy bueno con Java y C ++, y estoy aprendiendo R y Python. ¿Cuál debería ser mi próximo paso?

Cómo analizar mis datos fácilmente y mejorar mi negocio

¿Cuál es la mejor recuperación de fotos para recuperar datos de Android?

¿Cuál es un buen flujo de trabajo de Git para un equipo de análisis o ciencia de datos?

¿Cuáles son los requisitos para los estudios de posgrado en ciencias de gestión como la gestión de operaciones y las ciencias de decisión?

¿Qué herramientas usan los periodistas de datos para crear visualizaciones de datos? ¿Qué características les gustan más?

Tengo seis meses donde tengo que aprender Minería de datos y no hacer nada más. ¿Donde debería empezar?