Utilice Python para capturar grandes cantidades de datos (millones)
Cuando se utiliza Python para rastrear una gran cantidad de páginas web para obtener los datos deseados, el problema más importante es el problema de la interrupción del rastreador tan pronto como se interrumpe el lenguaje de secuencias de comandos de Python.
el proceso saldrá después de la interrupción. Cómo continuar recuperando la tarea anterior es crucial. A continuación nos centraremos en analizar este problema de interrupción.
El primer problema: un simple grupo de proxy dinámico puede resolverlo. Al rastrear una gran cantidad de datos, se recomienda utilizar algún middleware de almacenamiento en caché
para almacenar en caché las IP de proxy válidas y actualizarlas periódicamente. Recomendamos utilizar el repositorio de github
/jhao104/proxy_pool, que puede verificar la validez de la IP y poner la IP en redis, pero es demasiado complejo de implementar
. También usa db, que creo que es mejor modificarlo yo mismo. La dificultad es que utilizará otras solicitudes para determinar si la IP actual
es un rastreador. Cuando prestamos demasiada atención a nuestras propias solicitudes del rastreador e ignoramos otras solicitudes, el servidor puede juzgar que es un rastreador. rastreador, y luego esta IP
p>estará en la lista negra. Incluso si cambia su IP, seguirá estancado aquí. De esta forma, sería más sencillo utilizar el navegador Selenium Chrome para rastrear
uno por uno, pero la velocidad sería demasiado lenta. Es mejor que lo analices tú mismo y no será demasiado complicado.
Segunda pregunta: el tiempo de espera de la conexión de red es un problema que probablemente se encuentre. Puede deberse a fluctuaciones en la red local durante el rastreo o puede deberse al servidor que rastrea.
Se imponen restricciones de IP y, al rastrear hasta cierto punto, algunas operaciones retrasadas harán que se agote el tiempo de espera de la biblioteca http. Tiempo de espera de la biblioteca
(urllib). Sin embargo, si se trata de manipulación del lado del servidor, la latencia generalmente no es demasiado alta, por lo que solo necesitamos establecer un tiempo de espera
artificialmente alto (30 segundos), preferiblemente al iniciar el rastreo, especificar la biblioteca a ser utilizado Cree una capa de encapsulación para que pueda usarse comúnmente y modificarse
para que sea más fácil de usar.
La tercera pregunta: al analizar una gran cantidad de páginas estáticas, algunas páginas estáticas tienen reglas de análisis diferentes, por lo que debemos estar preparados para los puntos de interrupción
Continuar rastreando (PD: si es No es aconsejable ignorar el error, lo que podría provocar una gran pérdida de datos). Luego, existe una solución para continuar rastreando en el punto de interrupción durante la depuración. Esto es separar al productor y al consumidor. El productor es el rastreador que genera la URL a rastrear y el consumidor es un rastreador que captura
<. p>datos finales. El consumidor es el rastreador que obtiene los datos finales. Están conectados a través del middleware de mensajes. El productor envía la información de destino al middleware de mensajes para su rastreo. El consumidor obtiene la información desde allí, realizando indirectamente la función de rastreo distribuido. Dado que el middleware del consumidor ahora tiene el mecanismo, los consumidores que no logren capturar el enlace no podrán consumir la información, que luego se distribuirá a otros consumidores para su consumo. Por tanto, la probabilidad de pérdida de información es extremadamente baja. Pero aquí hay otro consejo: el tiempo de espera del consumo del consumidor no puede ser demasiado largo, de lo contrario el mensaje no se publicará a tiempo. También debe habilitar la persistencia de datos
para el intermediario de mensajes; de lo contrario, generará demasiados mensajes y no podrá consumirlos de manera oportuna, lo que hará que la máquina se quede sin memoria. No vale la pena ganar esto.
El cuarto problema: en este caso, solo puedes intentar capturar y vivir, lo cual no es una buena solución y te llevará un poco de tiempo si lo analizas solo. Pero cuando
la mayoría de los datos (99) son normales, esta excepción se puede descartar. Con la solución al tercer problema, tener interrupciones ocasionales es mucho más fácil.
Espero que esto ayude.
Espero que esto ayude.