¿A qué peligros debería prestar atención al escribir rastreadores en Python?
2. Hay muchas bibliotecas HTTP y existe una opción para reproducir la rutina después del parche mono de la biblioteca gevent. Si la escala es de 10 millones, urllib3 es muy bueno.
3. Tratar con sitios web como login y ajax es solo un trabajo manual y no se iniciará.
4. La velocidad es importante. Ejecutar en ec2 o en la nube nacional es un indicador muy importante, es decir, cuánto le costará rastrear 100 millones de páginas web. Al aumentar, ¿puede, por ejemplo, un nodo de VM de 4 núcleos utilizar 100 Mbps para préstamos entrantes?
5. Beautifulsoup es demasiado lento, rastrea toda la red y el análisis y la codificación son más rápidos. El chardet implementado en C está bien.
Lo más importante siempre es la extracción, análisis y utilización de la información después de bajar. Ese es otro tema.
1. Aprenda a utilizar el navegador Chrome para ver comunicaciones y ver formatos de elementos.
2. Agregar agente de usuario, que es la medida anti-rastreo más simple.
3. Es mejor utilizar Ipython para escribir rastreadores. En un entorno interactivo, siempre sabes cuál es tu problema.
Usar solicitudes
5. Después de descargar el html con get o post, asegúrese de que lo que necesita esté en el html en lugar de cargarlo con ajax o javascript más tarde.
6. En términos de análisis, BeautifulSoup es bueno. Para algunos casos muy especiales, puede considerar re.
7. Si necesita recopilar una gran cantidad de datos, debe aprender a utilizar un marco, como scrapy.
Avanzado:
Es necesario simular el inicio de sesión para unirse al sitio web, lo que requiere un uso extensivo de ajax o javascript, o anti-rastreadores. Utilice la sesión solicitada y esté atento a F12 para ver qué datos se envían.
No, simplemente utiliza un navegador emulado. Se recomienda selenio. Aunque es más lento y la memoria es relativamente grande, realmente ahorra trabajo y es básicamente imposible de detectar.
Finalmente, la velocidad del rastreador no debe ser demasiado rápida, agregue time.sleep(1) y use subprocesos múltiples lo menos posible. No es fácil para otros crear un sitio web, especialmente uno pequeño. Si no causa grandes problemas a los demás, otros harán la vista gorda; de lo contrario, la prohibición de IP no será divertida.
A algunas páginas les gusta usar la redirección, ¡pero los métodos get y post solicitados saltan directamente de forma predeterminada! Es posible redirigir a cookies y encabezados incorrectos, así que asegúrese de configurar el parámetro enable_redirects en falso.