Cómo escribir un rastreador Zhihu usando JAVA
A continuación se explica el código fuente del rastreador Zhihu y los principales puntos técnicos involucrados:
(1) Organización del paquete del programa
(2) Inicio de sesión simulado ( Principales puntos técnicos del rastreador 1)
Para rastrear datos de sitios web que requieren inicio de sesión, el inicio de sesión simulado es un paso necesario y, a menudo, es un punto difícil. El inicio de sesión simulado del rastreador Zhihu puede ser un buen ejemplo. Para implementar el inicio de sesión simulado de un sitio web, se requieren dos pasos principales: (1) Analizar el proceso de solicitud de inicio de sesión y encontrar las solicitudes clave y los pasos de inicio de sesión. Las herramientas de análisis pueden incluir IE (tecla de acceso directo F12), Fiddler y HttpWatcher ( 2) Escriba código para simular el proceso de inicio de sesión.
(3) Descarga de la página web (punto técnico principal del rastreador 2)
Después de simular el inicio de sesión, puede descargar el html de la página web de destino. Zhihu Crawler escribió un grupo de subprocesos de conexión de red basado en HttpClient y encapsuló los métodos de obtención y publicación de uso común para descargar páginas web.
(4) Obtener automáticamente el código de la página web (punto técnico principal 3 del rastreador)
Obtener automáticamente el código de la página web es el requisito previo para garantizar que el HTML de la página web descargada no aparezca confuso . El rastreador Zhihu proporciona métodos que pueden resolver el problema de la mayoría de las páginas web descargadas confusas.
(5) Análisis y extracción de páginas web (punto técnico principal 4 del rastreador)
Al usar Java para escribir rastreadores, existen dos métodos comunes de análisis y extracción de páginas web: usar Paquete Jar de código abierto Jsoup y Regular. En términos generales, Jsoup puede resolver el problema. Es raro que Jsoup no pueda analizar y extraer. Las poderosas funciones de Jsoup hacen que el análisis y la extracción sean extremadamente simples. El rastreador Zhihu usa Jsoup.
(6) Coincidencia y extracción regulares (punto técnico principal 5 del rastreador)
Aunque el rastreador Zhihu usa Jsoup para analizar páginas web, aún encapsula métodos regulares de coincidencia y extracción de datos. Porque las expresiones regulares también pueden hacer otras cosas, como usar expresiones regulares en los rastreadores Zhihu para filtrar y juzgar direcciones URL.
(7) Deduplicación de datos (punto técnico principal 6 de los rastreadores)
Para los rastreadores, existen diferentes soluciones de deduplicación según el escenario. (1) Para una pequeña cantidad de datos, como decenas de miles o cientos de miles de elementos, use Map o Set (2) Para datos de tamaño mediano, como millones o decenas de millones, use BloomFilter (el famoso Bloom); filtrar) Se puede resolver (3) Redis puede resolver una gran cantidad de datos, cientos de millones o miles de millones; Zhihu Crawler proporciona una implementación de BloomFilter, pero utiliza Redis para la deduplicación.
(8) Prácticas avanzadas de programación Java, como patrones de diseño
Además de los principales puntos técnicos de los rastreadores anteriores, la implementación de los rastreadores Zhihu también implica una variedad de patrones de diseño, principalmente También se utilizan patrones de cadena, modo singleton, modo combinado, etc., y la reflexión de Java. Además de aprender la tecnología de rastreo, este también es un buen caso para aprender patrones de diseño y mecanismos de reflexión de Java.
4. Visualización de algunos resultados de rastreo