Web scraping es un proceso de extracción de información útil de la World Wide Web. Durante una búsqueda en Google, un rastreador (bot), es decir, el rastreador, rastrea casi todo el contenido de la web y selecciona lo que le interesa.
Esta idea de que la información o el conocimiento debe estar disponible para todos condujo a la formación de la World Wide Web. Sin embargo, los datos que busca deben estar autorizados para uso público.
¿Cómo es útil el web scraping?
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 más amplio mediante el web scraping. Se puede utilizar para analizar y estudiar a los usuarios de un producto con el fin de mejorar el producto, en otras palabras, para crear un circuito de retroalimentación.
Las empresas de comercio electrónico pueden utilizarlo para estudiar las estrategias de precios de los competidores y, en consecuencia, desarrollar las suyas propias. El raspado web también se puede usar para el clima y las noticias.
Desafíos
#1. Restricción de IP
Muchos sitios web limitan la cantidad de solicitudes que puede realizar para obtener datos del sitio dentro de un período 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 front-end 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 contenido según sea necesario utilizando javascript del lado del cliente. Por lo tanto, es difícil para los raspadores saber cuál es el contenido de una página web. Para obtener el contenido, debe renderizar javascript del lado del cliente.
La API de Geekflare
Una API de raspado web resuelve la mayoría de los problemas con el raspado web porque maneja todo por usted. Exploremos la API de Geekflare y veamos cómo puede usarla para el web scraping.
La API de Geekflare ofrece un proceso simple de tres pasos:
- Proporcione una URL borrador
- Proporcionar algunas opciones de configuración
- Obtener los datos
Puede raspar la página web por usted, luego devolver datos HTML sin procesar como una cadena o como un archivo HTML enlazable, de la forma que más le convenga.
Uso de la API
En este tutorial, aprenderá a usar la API de Geekflare usando NodeJSName – un entorno de ejecución de javascript. Instale NodeJS en su sistema si no lo ha hecho antes de continuar.
- Ejecute el comando
npm init -y
en el terminal en la carpeta o directorio actual. Esto creará unpackage.json
archivo para usted.
- En el interior de
package.json
archivo, editarlomain
valor clave paraindex.mjs
si es otra cosa por defecto. Alternativamente, también puede agregar una clavetype
y establecer su valor igual amodule
.
{
“type”: “module”
}
- Agregar dependencia con nombre
axios
mientras se ejecutanpm i axios
comando en la terminal. Esta dependencia nos ayuda a enviar 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"
}
}
- Importar
axios
en el interior deindex.mjs
archivo como este. Aquí elimport
Se utiliza la palabra clave porque es un módulo de E/S. Si fuera un archivo commonJS, habría sido elrequire
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 en una constante.
const baseUrl = 'https://api.geekflare.com'
- Especifique la URL que desea buscar 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 el
axios
opciones de configuración, debe especificar el método comopost
la URL con el punto final, un encabezado llamadox-api-key
cuyo valor será la clave API proporcionada por Geekflare y finalmente, unadata
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 se debe extraer.
- producción: 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 la predeterminada.
- dispositivo: El tipo de dispositivo en el que desea abrir la página web. Acepta tres valores, ‘escritorio’, ‘móvil’ y ‘tableta’, siendo ‘escritorio’ el predeterminado.
- renderJS: un valor booleano para especificar si desea mostrar el 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 recupere los datos. Puede usar un IIFE (inmediatamente llamado expresión de función).
(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'
}
análisis HTML
Para analizar HTML, puede usar un paquete npm llamado node-html-parser
y también extraer datos de HTML. 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 el punto final de la API de metadatos de Geekflare. Ni siquiera necesita analizar el HTML.
Beneficios de usar la API de Geekflare
En las aplicaciones de una sola página, el contenido a menudo no lo representa el servidor, sino el navegador que usa javascript. Entonces, si recupera 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.
Este es un sitio 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é sacas?
<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>
Otra ventaja de usar la API de Geekflare es que le permite usar un proxy rotativo para asegurarse de que el sitio web no bloquee la IP. Geekflare API incluye la funcionalidad de proxy en su plan premium.
Ultimas palabras
El uso de una API de raspado web le permite concentrarse solo en los datos raspados sin muchos problemas técnicos. Aparte de eso, la API de Geekflare también proporciona funciones como 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 ello bajo una única API. Consulte la documentación oficial de la API de Geekflare para obtener más información.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones