
Enseñanza práctica del uso de BeautifulSoup para realizar rastreos web
Recientemente, siempre hay hierro viejo me preguntó, usando Python para participar en el rastreo web siempre se bloqueará IP ¿cómo lidiar con? Hoy vamos a fastidiar sobre este asunto. Vamos a empezar con un caso real: mi discípulo quería coger el precio de un determinado sitio web el mes pasado, y acaba de capturar 200 IPs fueron bloqueados. Esta vez tenemos que ofrecer a nuestrosmétodo proxy IPespecialmente con el servicio a domicilio de ipipgo, que ha demostrado su capacidad para realizar adquisiciones de alta intensidad.
¿Por qué necesito una IP proxy?
Para dar una castaña, el sitio es como un portero de la comunidad, te pones la misma ropa para entrar y salir todos los días, tres días para ser reconocido. Proxy IP esdrag queenSi quieres usar un agente diferente para cada solicitud, tienes que cambiar tu "blindaje". Pero ojo, no utilices esos proxies gratuitos, nueve de cada diez son una mierda. Como ipipgo este proveedor de servicios profesionales, IP pool es grande y estable, no es fácil de volcar.
importar peticiones
from bs4 import BeautifulSoup
proxies = {
'http': 'http://username:password@proxy.ipipgo.com:9020',
https: https://username:password@proxy.ipipgo.com:9020
}
response = requests.get('https://目标网站.com', proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
seguido de tu código de análisis...
No descuide los preparativos medioambientales
El asunto de la carga de bibliotecas es a veces bastante metafísico, y recomendamos utilizar la fuente Tsinghua Mirror:
pip install beautifulsoup4 requests -i https://pypi.tuna.tsinghua.edu.cn/simple
Preste atención a la compatibilidad de versiones, se recomienda Python 3.8 o superior. Si encuentras errores SSL, recuerda actualizar tu certificado:
pip install --upgrade certifi
Cuatro pasos hacia el combate real
1. En primer lugar, disfraza el archivo de cabecera, no dejes que el sitio web te identifique como un reptil
cabeceras = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) como un navegador decente',
'Accept-Language': 'zh-CN,zh;q=0.9'
}
2. La configuración del proxy debe ser cuidadosa, se recomienda utilizar la sesión para mantener la sesión:
session = requests.Session()
session.proxies.update(proxies)
3. El análisis sintáctico es más seguro con selectores CSS, como para encontrar el precio de un producto:
price_tags = soup.select('div.price-wrapper > span.current-price')
4. No seas perezoso con la gestión de excepciones, especialmente las fluctuaciones de la red:
try:
response.raise_for_status()
except requests.exceptions.HTTPError as err:
print(f"撞了: {err}")
这里可以触发ipipgo的自动切换IP功能
Desminado de baches comunes
| sintomático | antídoto |
|---|---|
| Devuelve un error 403 | Comprobación de User-Agent y cookies |
| Tiempo de espera de la conexión | Aumentar el parámetro de tiempo de espera |
| discordancia de datos | Confirmación de cambios en la estructura de la página |
Tiempo de control de calidad
P: ¿Necesito cambiar mi IP a menudo con ipipgo?
R: Su grupo de IP es lo suficientemente grande, el valor predeterminado girará automáticamente, a menos que la adquisición particularmente de alta frecuencia, por lo general no tienen que cambiar manualmente.
P: ¿Cómo se controla la velocidad de arrastre?
R: Sugiero añadir un retardo aleatorio:
importar tiempo
importar random
time.sleep(random.uniform(1, 3)) Random sleep 1-3 segundos
P: ¿Qué debo hacer si encuentro un CAPTCHA?
R: Esta situación sugiere: 1. reducir la frecuencia de las solicitudes 2. utilizar el elevado alijo de agentes de ipipgo 3. en la plataforma de codificación (pero el coste sube)
Unas palabras finales.
La IP proxy no es una panacea, la clave paraFingir ser una persona real.La familia ipipgo dinámico agente residencial es especialmente adecuado para la necesidad de la recogida a largo plazo de la escena, la prueba pro continua ejecución durante una semana no se han bloqueado. Recuerde, la captura de la página web para hablar artes marciales, no hacer que los servidores de las personas cuelgan.

