CAPSOLVER
Blog
Cómo usar Hrequests para raspado web

Cómo usar Hrequests para Web Scraping

Logo of CapSolver

Lucas Mitchell

Automation Engineer

04-Sep-2024

Cómo usar Hrequests para el Scraping Web

El scraping web es una forma poderosa de extraer información de sitios web, pero a menudo es un desafío cuando los sitios implementan captchas, limitación de velocidad o proxies para bloquear scrapers no deseados. En esta guía, presentaremos hrequests, una biblioteca de scraping web de alto rendimiento, y lo guiaremos a través de su uso básico, incluido un demo para raspar un sitio usando hrequests en combinación con Capsolver para evitar los desafíos de ReCaptcha.

¿Qué es hrequests?

hrequests es una moderna biblioteca HTTP de Python diseñada para la velocidad y la flexibilidad, diseñada para manejar tareas de scraping web pesadas. Es esencialmente una versión mejorada de requests, con un mayor énfasis en el manejo de solicitudes con más control, especialmente en entornos que requieren manejo adicional de proxy o captcha.

La biblioteca proporciona varias características:

  • Soporte de asyncio para realizar solicitudes concurrentes.
  • Manejo de sesiones para reutilizar conexiones de manera eficiente.
  • Soporte de proxy para manejar solicitudes detrás de proxies.
  • Limitación de velocidad para evitar ser bloqueado.
  • Soporte de resolución de captcha a través de servicios externos.

Requisitos previos

Antes de sumergirse en el uso de hrequests, asegúrese de tener instalado lo siguiente:

bash Copy
pip install hrequests capsolver

Asegúrese de también tener una clave de API de Capsolver para resolver captchas si el sitio que está raspando lo requiere. Para obtener instrucciones de configuración detalladas, visite la página de GitHub de hrequests.

Empezando con hrequests

Aquí hay un ejemplo básico de cómo usar hrequests para raspar una página web:

python Copy
import hrequests

# URL de la página web que queremos raspar
url = 'https://example.com'

# Hacer una solicitud GET simple
response = hrequests.get(url)

# Imprimir el código de estado


```python
print(f"Código de estado: {response.status_code}")

# Imprime el contenido de la página
print(f"Contenido de la página: {response.text}")

Este script básico realiza una solicitud GET a la URL dada e imprime el código de estado y el contenido de la página. Sin embargo, muchos sitios web son más complejos y requieren un manejo adicional, como la rotación de proxies, la suplantación de agentes de usuario o la resolución de captchas.

Manejo de captchas con Capsolver y hrequests

En esta sección, exploraremos cómo integrar Capsolver con hrequests para omitir los captchas. Capsolver es un servicio externo que ayuda a resolver varios tipos de captchas, incluido ReCaptcha V2, que se usa comúnmente en los sitios web.

Demostrarámos cómo resolver ReCaptcha V2 usando Capsolver y luego raspando el contenido de una página que requiere resolver el captcha primero.

Ejemplo: Resolviendo ReCaptcha V2 con Capsolver

python Copy
import capsolver
import hrequests
import os

# Considere usar variables de entorno para información sensible
PROXY = os.getenv("PROXY", "http://username:password@host:port")
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "Your Capsolver API Key")
PAGE_URL = os.getenv("PAGE_URL", "PAGE_URL")
PAGE_KEY = os.getenv("PAGE_SITE_KEY", "PAGE_SITE_KEY")

def solve_recaptcha_v2(url, key):
    solution = capsolver.solve({
        "type": "ReCaptchaV2Task",
        "websiteURL": url,
        "websiteKey": key,
        "proxy": PROXY
    })
    return solution['solution']['gRecaptchaResponse']

def main():
    print("Resolviendo reCaptcha v2")
    solution = solve_recaptcha_v2(PAGE_URL, PAGE_KEY)
    print("Solución: ", solution)

    # Ahora que hemos resuelto el captcha, podemos continuar con el raspado
    headers = {
        "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"
    }

    # Enviando una solicitud GET con la solución de captcha
    response = hrequests.get(
        PAGE_URL, 
        headers=headers, 
        data={"g-recaptcha-response": solution},
python Copy
proxies = {"http": PROXY, "https": PROXY}
    )

    # Verificando el estado e imprimiendo el contenido de la página
    if response.status_code == 200:
        print("¡Página recuperada correctamente!")
        print(response.text)
    else:
        print(f"Error al recuperar la página. Código de estado: {response.status_code}")

if __name__ == "__main__":
    main()

Siéntete libre de ampliar este script para satisfacer tus necesidades de raspado y experimentar con las características adicionales que ofrece hrequests. Siempre asegúrate de que tus actividades de raspado respeten los términos de servicio del sitio web y las directrices legales.

¡Feliz raspado!

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse