
¿Cómo funciona realmente contains() de XPath?
Los hermanos que se dedican a la recopilación de datos deben entender que el posicionamiento de los elementos de una página web es como una aguja en un pajar. En este momento XPath contiene () función es su imán, especialmente cuando las características del elemento no son obvias. Por ejemplo, para encontrar una página con todo el "precio" de la etiqueta div palabra, directamente escrito como//div[contains(text(),'precio')]mucho más flexible que la comparación con el texto completo.
//[contains(@class,'btn_submit')] //encuentra elementos que contengan el estilo del botón de envío
//a[contains(@href,'product_detail')] //obtener el enlace a la página de detalles del producto
¿Cómo funcionan conjuntamente las IP proxy y XPath?
Muchos sitios web anti-escalada ladrón mecanismo bien, la misma IP visitas frecuentes directamente a su negro. En este momento tenemos queProxy dinámico residencial para ipipgoDe entrada, su reserva de IP se actualiza con más de 8.000 nodos al día. Supongamos que quieres recopilar datos de precios de un sitio de comercio electrónico:
importar peticiones
from lxml import etree
proxies = {
http: http://user:pass@gateway.ipipgo.com:9021
}
resp = requests.get('https://xxx.com', proxies=proxies)
html = etree.HTML(resp.text)
prices = html.xpath('//span[contains(@class, "precio")]')
Guía práctica para evitar el pozo
Me he encontrado con este escollo: un sitio web que oculta el precio en eldatos-precioEn las propiedades, el texto de superficie muestra "¥??". en el atributo, el texto de superficie muestra "¥? En este punto, usar simplemente text() para localizarlo sería una chapuza, y tendrías que escribirlo así:
//div[@id='bienes']/@datos-precio // extraer directamente los valores de los atributos
Con ipipgo'sEstrategia de rotación inteligenteLa empresa ha establecido un cambio automático de IP cada 5 minutos, y la tasa de éxito en la recogida se ha disparado directamente de 50% a 95%. También pueden ver el estado de uso de cada IP en segundo plano, lo que realmente les libera de preocupaciones.
Seguro que te lo estás preguntando.
P: ¿C contains() distingue entre mayúsculas y minúsculas?
R: ¡Puntos! Para encontrar "PRECIO" necesitas escribir 'PRECIO', ¡sugerimos usar primero la función translate() para convertir a minúsculas!
P: ¿Cómo rompo el contenido cargado dinámicamente?
R: Utilice ipipgo's primeroAgentes High StashEvita el backcrawl, y con una herramienta como Selenium, espera a que el elemento termine de cargarse antes de cogerlo
P: ¿Sobrevive el ipipgo lo suficiente?
R: La prueba real de su única IP se puede utilizar durante 10-30 minutos, hacer la recolección regular es completamente suficiente. Si se trata de una tarea a largo plazo, se recomienda abrir API para extraer nueva IP automáticamente.
¿Por qué ipipgo?
Tras comparar varios proveedores de proxy, ipipgo tiene tres ventajas fundamentales:
| funcionalidad | Agente general | ipipgo |
|---|---|---|
| Tipo IP | Sala de servidores basada en IP | Propiedad intelectual residencial |
| concurrencia | 50 hilos | sin límites |
| localización geográfica | Ciudades fijas | Seleccione la ubicación de la estación base a petición |
La semana pasada estuve ayudando a un cliente con una captura comparativa y utilicé suIP local de Shanghai访问目标网站,居然比普通代理快3倍。后来才知道他们和三大运营商有通道,这波属实专业。
El combo definitivo
Por último, compartiré un plan de configuración privado:
- Creado en la consola ipipgosesión persistenteactuar en nombre de algn. en un puesto de responsabilidad
- XPath se escribe como
//[contains(@id,'resultado_')]Coincidencia de ID dinámico - Reintento de error de configuración 3 veces + cambio automático de IP
Este conjunto de combinaciones midió la recogida media diaria de 100.000 datos sin interferencias. Especialmente para quienes realizan comercio electrónico transfronterizo, utilizan suIP nativa de ultramarCombinado con el posicionamiento XPath, es una forma sólida de captar datos de la competencia.

