Este artículo explora el método de scraping de Pinterest utilizando Python y Playwright, una robusta librería de automatización. Pinterest, conocido por su rico contenido visual, sirve como terreno fértil para el análisis de datos o iniciativas de automatización. En concreto, la extracción de URL de imágenes de los resultados de búsqueda puede ser crucial para la investigación o las iniciativas comerciales.
Playwright facilita la automatización de sesiones interactivas a través de múltiples navegadores. Cuenta con funciones como la interceptación de solicitudes de red, que permite extraer datos directamente del tráfico. Además, su capacidad para funcionar en modo no renderizado mejora la eficacia y escalabilidad del scraping. El uso de proxies, aunque opcional, se recomienda para garantizar el anonimato y ayudar a sortear posibles bloqueos, consolidando así a Playwright como la herramienta preferida para la recolección de contenidos visuales de Pinterest.
Antes de empezar, necesitas instalar Playwright en tu entorno Python. Puedes instalarlo usando pip:
pip install playwright
Una vez instalado, tendrás que instalar los binarios del navegador:
playwright install
Ahora, veamos un script básico para scrapear URLs de imágenes de Pinterest.
El guión, cuya versión completa se presenta a continuación, incluye los siguientes elementos:
La función principal construye una URL de consulta de búsqueda de Pinterest basada en la entrada del usuario, por ejemplo, https://in.pinterest.com/search/pins/?q=halloween%20decor, y luego la pasa a la función capture_images_from_pinterest.
La página Playwright escucha las respuestas de la red mediante page.on('response', ...).
La función handle_response filtra las respuestas de red, garantizando que sólo se capturen aquellas con imágenes de tipo recurso y URL terminadas en .jpg.
Después de recopilar las URL de las imágenes, las guardamos en un archivo CSV llamado pinterest_images.csv, para que los datos obtenidos sean fáciles de exportar y analizar.
Aquí está el código Python que raspa los resultados de búsqueda de Pinterest y extrae todas las URL de las imágenes:
import asyncio
from playwright.async_api import async_playwright
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
# Almacenar URL de imágenes con terminación '.jpg'
image_urls = []
# Función para interceptar y procesar respuestas de red
page.on('response', lambda response: handle_response(response, image_urls))
# Navegue hasta la URL
await page.goto(url)
# Espere a que se estabilice la actividad de la red (ajústela si es necesario)
await page.wait_for_timeout(10000)
# Cerrar el navegador
await browser.close()
return image_urls
# Función de comprobación de URL de imágenes .jpg
def handle_response(response, image_urls):
if response.request.resource_type == 'image':
url = response.url
if url.endswith('.jpg'):
image_urls.append(url)
# Función principal para ejecutar la tarea asíncrona
async def main(query):
url = f"https://in.pinterest.com/search/pins/?q={query}"
images = await capture_images_from_pinterest(url)
# Guardar imágenes en un archivo CSV
with open('pinterest_images.csv', 'w') as file:
for img_url in images:
file.write(f"{img_url}\n")
print(f"Saved {len(images)} image URLs to pinterest_images.csv")
# Ejecutar la función principal asíncrona
query = 'halloween decor'
asyncio.run(main(query))
El scraping de Pinterest puede provocar la limitación de la tasa o incluso prohibiciones si realizas demasiadas solicitudes desde la misma dirección IP. Los proxies ayudan a mitigar esta situación enrutando las solicitudes a través de diferentes direcciones IP, lo que hace que parezca que varios usuarios están navegando por Pinterest.
Por qué usar proxies:
Puede configurar fácilmente proxies con Playwright utilizando el argumento proxy en el método de lanzamiento. En este ejemplo, sustituya "http://your-proxy-address:port" por la dirección de su servidor proxy, el número de puerto y las credenciales del proxy.
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
# Añadir proxy aquí
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
page = await browser.new_page()
Por consiguiente, la integración de Playwright con un proxy aumenta la eficacia de la automatización del scraping. Esta combinación no solo mitiga los riesgos que plantean los mecanismos anti-bot, sino que también aumenta la eficacia general de los procesos de recopilación de datos.
Existen varios retos a los que los usuarios pueden enfrentarse cuando utilizan Playwright para raspar datos de Pinterest:
La utilización de Playwright con proxies y en modo headless puede mitigar eficazmente estos retos, reduciendo el riesgo de bloqueos y mejorando la eficacia de la extracción de datos.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Comentarios: 0