
当爬虫遇上HTML:先别急着撞南
El hierro viejo dedicado a los rastreadores de red debe haber encontrado con esta situación: es difícil escribir un buen guión, de repente el sitio de destino se tira negro. Esto es cuando se necesitan dos cepillos - elAnalizar contenidos web y aprender a protegerse al mismo tiempoLo primero de lo que vamos a hablar hoy es de que Beautiful Soup es como una navaja suiza. La Beautiful Soup de la que vamos a hablar hoy es como una navaja suiza, especializada en todo tipo de líos HTML.
Empecemos por el papel de las IP proxy en esta jugada. Supongamos que quieres visitar un determinado sitio web continuamente para comprobar los datos, usar una IP fija es como llevar un traje fluorescente para rastrear - expuesto en minutos. Este tiempoGrupo proxy para ipipgoViene muy bien, como si tuvieras cientos de accesorios para travestirte.
Por ejemplo, utilizando requests con un proxy
importar peticiones
from bs4 import BeautifulSoup
proxies = {
'http': 'http://username:password@gateway.ipipgo.com:9020',
https: http://username:password@gateway.ipipgo.com:9020
}
response = requests.get('https://target-site.com', proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
Lección de anatomía HTML: no te enredes con las etiquetas
Beautiful Soup es el lugar más impresionante es que el desorden de HTML se puede limpiar de manera satisfactoria. Veamos algunos trucos comunes:
1. Encontrar cosas es como comprobar el contador de aguaEl uso de find() y find_all() es como tener una orden de búsqueda, y el selector CSS es tu navegador GPS. Por ejemplo, si quieres coger todos los precios de los artículos:
precio_etiquetas = soup.select('.producto-precio')
for precio en etiquetas_precio.
print(precio.obtener_texto())
2. No te pierdas los valores de los atributos: Cuando encuentres una imagen o un enlace, acuérdate de sacar el href o el src. Pon un ejemplo de cómo sacar una imagen:
images = soup.find_all('img')
for img in images: print(img['src'])
print(img['src']) Ten en cuenta que puedes obtener un error aquí, ¡así que recuerda añadir una excepción!
La forma correcta de abrir una IP proxy
Aquí viene lo bueno. Un escollo en el que tienden a caer muchos novatos:
| postura incorrecta | manejo correcto |
|---|---|
| IP única hasta la muerte | Rotación dinámica del conjunto de agentes con ipipgo |
| Ignorar la configuración del tiempo de espera | requests.get(tiempo de espera=10) |
| Acceso al desnudo | Asegúrese de añadir el camuflaje User-Agent. |
Recomendado para ipipgoModo de conmutación inteligenteLa API asignará automáticamente las IP disponibles, y se ha probado, y la recogida continua no se ha bloqueado durante 3 horas, lo que es mucho más fiable que algunos servicios proxy que venden carne de perro.
Problemas en el campo
No te asustes cuando te encuentres con un CAPTCHA, prueba estos trucos:
1. Reducir la frecuencia de las peticiones e hibernar aleatoriamente con el módulo random
2. Cambie el User-Agent a otro navegador.
3. Cambia inmediatamente la IP alternativa de ipipgo en caso de baneo.
4. Los datos importantes se recogen por lotes, así que no intentes engordarlos de una sola vez.
Ejemplo de hacerse pasar por un navegador
cabeceras = {
User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers, proxies=proxies)
sesión de preguntas y respuestas
P: ¿Por qué utilizar ipipgo en lugar de proxies gratuitos?
R: Un proxy gratuito es como un baño público, cualquiera puede usarlo pero la higiene no está garantizada. El proxy exclusivo de ipipgo es como tu propio baño, limpio e higiénico.
P: ¿Qué debo hacer si me encuentro con datos cargados dinámicamente?
R: Puedes trabajar con Selenium, recuerda colgar proxy para Selenium también. ipipgo soporta el protocolo socks5, que es adecuado para este escenario.
P: ¿Cómo puedo saber si una IP está expuesta?
R: Visite regularmente http://httpbin.org/ip检测 y si la IP devuelta no coincide con lo esperado, apresúrese a cambiar la nueva IP de ipipgo.
Un último despotrique, sea rastreador y sea marcial. No jodas las webs de la gente con ipipgo'sControl QPS inteligenteLa función es garantizar la eficacia y no ser un gamberro cibernético. Cuando se trata de sitios web difíciles, su servicio técnico de atención al cliente también puede dar soluciones personalizadas, este punto es realmente más íntimo que los compañeros.

