English English French French Spanish Spanish German German
Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Cómo raspar el sitio web usando Geekflare Web Scraping API

Geekflare-web-scraping-API
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

El web scraping es un proceso para extraer información útil de la World Wide Web. Durante una búsqueda en Google, un rastreador web (bot), es decir, el rastreador, revisa casi todo el contenido de la web y selecciona lo que es relevante para usted.

Esta idea de que la información o el conocimiento debe ser accesible para todos condujo a la formación de la red mundial. Sin embargo, los datos que busca deben estar autorizados para uso público.

How is web scraping useful?

Vivimos en la era de los datos. Los datos sin procesar se pueden convertir en información útil que se puede usar para cumplir un propósito mayor con la ayuda de web scraping. Se puede utilizar para analizar y estudiar a los usuarios de un producto para mejorar el producto, en otras palabras, para crear un circuito de retroalimentación.

Las empresas de comercio electrónico pueden usarlo para estudiar las estrategias de precios de los competidores y, en consecuencia, elaborar las suyas propias. El raspado web también se puede utilizar para informar sobre el clima y las noticias.

Challenges

#1. Restricción de IP

Varios sitios web limitan la cantidad de solicitudes que puede realizar para obtener los datos del sitio en un intervalo de tiempo determinado mediante la detección de su dirección IP o geolocalización. Lo hacen para evitar ataques maliciosos en su sitio web.

#2. Captcha

Distinguir entre un ser humano real y un bot que intenta acceder al sitio web es lo que realmente hacen los captchas. Los sitios web lo utilizan para evitar el spam en el sitio web, así como para controlar la cantidad de raspadores en el sitio web.

#3. Representación del lado del cliente

Este es uno de los mayores obstáculos para los web scrapers. Los sitios web modernos utilizan marcos frontend que son capaces de crear aplicaciones de una sola página. La mayoría de las aplicaciones de una sola página no tienen contenido generado por el servidor. En su lugar, generan el contenido según las necesidades utilizando javascript del lado del cliente. Esto dificulta que los rastreadores sepan cuál es el contenido de una página web. Para obtener el contenido, debe generar algún javascript del lado del cliente.

The Geekflare API

A API de raspado web resuelve la mayoría de los desafíos que enfrenta al realizar web scraping porque maneja todo por usted. Exploremos la API de Geekflare y veamos cómo puede usarla para el web scraping.

La API de Geekflare tiene un proceso simple de tres pasos para usted:

  • Proporcione una URL para raspar
  • Proporcionar algunas opciones de configuración
  • Obtener los datos

Puede raspar la página web por usted y luego devolver datos HTML sin procesar como una cadena o en un archivo HTML al que se puede acceder a través de un enlace, de la forma que le resulte más conveniente.

Usando la API

En este tutorial, aprenderá a usar la API de Geekflare usando NodeJS – un entorno de tiempo de ejecución de javascript. Instala NodeJS en su sistema si no lo ha hecho antes de continuar.

  • Dentro de una nueva carpeta, cree un archivo llamado index.mjs. la razón detrás mjs extensión es que queremos que este archivo se considere como un módulo ES en lugar de un archivo JS común. Comprobar el diferencia entre módulos ES y archivos JS comunes.
  • Ejecuta el comando npm init -y en la terminal en la carpeta o directorio actual. Creará un package.json archivo para usted.
  • Dentro del package.json archivo, cambie el main valor clave para index.mjs si es otra cosa por defecto. Alternativamente, también puede agregar una clave type y establecer su valor igual a module.
{
  “type”: “module”
}
  • Agregar una dependencia llamada axios mediante la ejecución npm i axios comando en la terminal. Esta dependencia nos ayuda a realizar solicitudes de recuperación a puntos finales específicos.
  • Su package.json debería verse así:
{
  "name": "webscraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Murtuzaali Surti",
  "license": "ISC",
  "dependencies": {
    "axios": "^1.1.3"
  }
}
  • Importa axios dentro de index.mjs archivo como este. Aquí el import Se usa la palabra clave porque es un módulo ES. Si fuera un archivo commonJS, habría sido el require palabra clave.
import axios from ‘axios’
  • La URL base para todas nuestras solicitudes a la API de Geekflare será la misma para cada punto final. Entonces, puedes almacenarlo dentro de una constante.
const baseUrl = 'https://api.geekflare.com'
  • Especifique la URL de la que desea raspar y obtener los datos.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Cree una función asíncrona e inicialice axios dentro de ella.
async function getData() {
    const res = await axios({})
    return res
}
  • En primera axios opciones de configuración, debe especificar el método como post, la URL junto con el punto final, un encabezado conocido como x-api-key cuyo valor será la clave API proporcionada por Geekflare y, por último, una data objeto que se enviará a la API de Geekflare. Puede obtener su clave API yendo a dash.geekflare.com.
const res = await axios({
    method: "post",
    url: `${baseUrl}/webscraping`,
    headers: {
        "x-api-key": "your api key"
    },
    data: {
        url: toScrapeURL,
        output: 'file',
        device: 'desktop',
        renderJS: true
    }
})
  • Como puede ver, el objeto de datos tiene las siguientes propiedades:
    • url: la URL de una página web que debe rasparse.
    • salida: el formato en el que se le presentan los datos, ya sea en línea como una cadena o en un archivo HTML. La cadena en línea es el valor predeterminado.
    • dispositivo: el tipo de dispositivo en el que desea que se abra la página web. Acepta tres valores, 'escritorio', 'móvil' y 'tableta', siendo 'escritorio' el valor predeterminado.
    • renderJS: un valor booleano para especificar si desea renderizar javascript o no. Esta opción es útil cuando se trata de renderizado del lado del cliente.
  • Llame a la función asíncrona y obtenga los datos. Puede utilizar una IIFE (expresión de función invocada inmediatamente).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • La respuesta será algo como esto:
{
  timestamp: 1669358356779,
  apiStatus: 'success',
  apiCode: 200,
  meta: {
    url: 'https://murtuzaalisurti.github.io',
    device: 'desktop',
    output: 'file',
    blockAds: true,
    renderJS: true,
    test: { id: 'mvan3sa30ajz5i8lu553tcckchkmqzr6' }
  },
  data: 'https://api-assets.geekflare.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Parsing HTML

Para analizar HTML, puede usar un paquete npm llamado node-html-parser y para extraer datos de HTML también. Por ejemplo, si desea extraer el título de una página web, puede hacer lo siguiente:

import { parse } from ‘node-html-parser’
const html = parse(htmlData) // htmlData is the raw html string you get from the Geekflare API.

Alternativamente, si solo desea los metadatos de un sitio web, puede usar API de metadatos de Geekflare punto final Ni siquiera tiene que analizar HTML.

Benefits of using Geekflare API

En las aplicaciones de una sola página, el contenido a menudo no se procesa en el servidor, sino que lo procesa el navegador mediante javascript. Por lo tanto, si raspa la URL original sin mostrar el javascript necesario para mostrar el contenido, no obtiene nada más que un elemento contenedor sin contenido. Dejame mostrarte un ejemplo.

Aquí hay un sitio web de demostración construido usando reaccionar y vitejs. Extraiga este sitio usando la API de Geekflare con la opción renderJS establecida en falso. ¿Qué obtuviste?

<body>
    <div id="root"></div>
<body>

Solo hay un contenedor raíz sin contenido. Aquí es donde entra en acción la opción renderJS. Ahora intente raspar el mismo sitio con la opción renderJS establecida en verdadero. ¿Qué sacas?

<body>
    <div id="root">
        <div class="App">
            <div>
                <a href="https://vitejs.dev" target="_blank">
                    <img src="/vite.svg" class="logo" alt="Vite logo">
                </a>
                <a href="https://reactjs.org" target="_blank">
                    <img src="/assets/react.35ef61ed.svg" class="logo react" alt="React logo">
                </a>
            </div>
            <h1>Vite + React</h1>
            <div class="card">
                <button>count is 0</button>
                <p>Edit <code>src/App.jsx</code> and save to test HMR</p>
            </div>
            <p class="read-the-docs">Click on the Vite and React logos to learn more</p>
        </div>
    </div>
</body>

Otro beneficio de usar la API de Geekflare es que le permite usar un proxy rotativo para que pueda asegurarse de que el sitio web no bloquee la IP. La API de Geekflare incluye la función de proxy en su plan de prima.

Palabras finales

El uso de una API de raspado web le permite concentrarse solo en los datos raspados sin demasiados problemas técnicos. Aparte de eso, la API de Geekflare también proporciona funciones como la verificación de enlaces rotos, meta raspado, estadísticas de carga del sitio web, captura de pantalla, estado del sitio y mucho más. Todo eso bajo una sola API. Revisar la documentación oficial de la API de Geekflare para obtener más información.

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Trata Intruder