{"id":11399,"date":"2020-12-18T13:15:21","date_gmt":"2020-12-18T13:15:21","guid":{"rendered":"https:\/\/www.rapidseedbox.com\/?p=11399"},"modified":"2025-10-28T18:31:07","modified_gmt":"2025-10-28T18:31:07","slug":"web-scraping","status":"publish","type":"post","link":"https:\/\/www.rapidseedbox.com\/es\/blog\/web-scraping","title":{"rendered":"La gu\u00eda definitiva para Web Scraping [Actualizado]"},"content":{"rendered":"<p>In this ultimate guide, we will explore the world of web scraping, a powerful technique to extract data from websites. rat<\/p>\n\n\n\n<p><em>Tanto si eres un principiante con curiosidad por el concepto como un programador experimentado que busca mejorar sus habilidades, esta gu\u00eda tiene algo valioso para todos. Desde la comprensi\u00f3n de los fundamentos de la extracci\u00f3n de datos HTML utilizando CSS y <a href=\"https:\/\/www.rapidseedbox.com\/blog\/xpath-cheat-sheet\" target=\"_blank\" rel=\"noreferrer noopener\">XPath<\/a> a la pr\u00e1ctica del web scraping con Python. Adem\u00e1s, abordaremos los aspectos legales, las consideraciones \u00e9ticas y las mejores pr\u00e1cticas para garantizar un scraping web responsable. <\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"532\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping-1024x532.png\" alt=\"raspado web\" class=\"wp-image-25091\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping-1024x532.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping-300x156.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping-18x9.png 18w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><em><strong>Descargo de responsabilidad: <\/strong>Este material ha sido desarrollado estrictamente con fines informativos. No constituye respaldo de ninguna actividad (incluidas las actividades ilegales), productos o servicios. Usted es el \u00fanico responsable de cumplir con las leyes aplicables, incluidas las leyes de propiedad intelectual, cuando utilice nuestros servicios o conf\u00ede en cualquier informaci\u00f3n contenida en este documento. No aceptamos ninguna responsabilidad por los da\u00f1os que surjan del uso de nuestros servicios o la informaci\u00f3n contenida en este documento de ninguna manera, excepto cuando lo exija expl\u00edcitamente la ley.<\/em><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Tabla de contenidos.&nbsp;<\/h2>\n\n\n\n<ol>\n<li><a href=\"#01\">\u00bfQu\u00e9 es el Web Scraping y c\u00f3mo funciona?<\/a> <\/li>\n\n\n\n<li><a href=\"#02\">Fundamentos de la extracci\u00f3n de datos HTML: Selectores CSS y XPath.<\/a><\/li>\n\n\n\n<li><a href=\"#03\">Web Scraping con Python (+ C\u00f3digo).<\/a><\/li>\n\n\n\n<li><a href=\"#06\">\u00bfEs legal el web scraping?<\/a> <\/li>\n\n\n\n<li><a href=\"#08\">\u00bfC\u00f3mo intentan los sitios web bloquear el web scraping?<\/a> <\/li>\n\n\n\n<li><a href=\"#010\">Pr\u00e1cticas \u00e9ticas y recomendadas para el Web Scraping.<\/a> <\/li>\n\n\n\n<li><a href=\"#07\">Web Scraping: Preguntas m\u00e1s frecuentes (FAQ)<\/a><\/li>\n\n\n\n<li><a href=\"#012\">Palabras Finales.<\/a><\/li>\n<\/ol>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"01\">1. \u00bfQu\u00e9 es el Web Scraping y c\u00f3mo funciona?<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Web Scraping le ahorrar\u00e1 una tonelada de tiempo PARA SIEMPRE\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/QUKRkIYg6as?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>El web scraping (tambi\u00e9n conocido como web harvesting o extracci\u00f3n de datos) es el proceso de extracci\u00f3n autom\u00e1tica de datos de sitios web, servicios web y aplicaciones web. <\/p>\n\n\n\n<p>El raspado web nos evita tener que entrar en cada sitio web y extraer los datos manualmente, un proceso largo e ineficaz. El proceso consiste en utilizar scripts o programas automatizados. El script o programa accede a la estructura HTML de la p\u00e1gina web, analiza los datos y extrae los elementos espec\u00edficos necesarios de la p\u00e1gina para su posterior an\u00e1lisis. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"05\">a. \u00bfPara qu\u00e9 se utiliza el Web Scraping?<\/h3>\n\n\n\n<p>El web scraping es fant\u00e1stico si se hace con responsabilidad. En general, puede utilizarse para investigar mercados, por ejemplo para obtener informaci\u00f3n y conocer las tendencias de un mercado concreto. Tambi\u00e9n es popular en el seguimiento de la competencia para conocer su estrategia, precios, etc.<\/p>\n\n\n\n<p><strong>&nbsp;Los casos de uso m\u00e1s espec\u00edficos son: <\/strong><\/p>\n\n\n\n<ul>\n<li>Plataformas sociales (<a href=\"https:\/\/www.rapidseedbox.com\/blog\/twitter-facebook-scraper-guide\" target=\"_blank\" rel=\"noreferrer noopener\">Raspado de Facebook y Twitter<\/a>)<\/li>\n\n\n\n<li>Control en l\u00ednea de los cambios de precios, <\/li>\n\n\n\n<li>Revisiones de productos, <\/li>\n\n\n\n<li>Campa\u00f1as SEO,<\/li>\n\n\n\n<li>Listados inmobiliarios, <\/li>\n\n\n\n<li>Seguimiento de los datos meteorol\u00f3gicos, <\/li>\n\n\n\n<li>Seguimiento de la reputaci\u00f3n de un sitio web, <\/li>\n\n\n\n<li>Seguimiento de la disponibilidad y los precios de los vuelos, <\/li>\n\n\n\n<li>Pruebe los anuncios, independientemente de la geograf\u00eda, <\/li>\n\n\n\n<li>Control de los recursos financieros, <\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">b. \u00bfC\u00f3mo funciona el Web Scraping? <\/h3>\n\n\n\n<p>Los elementos t\u00edpicos que intervienen en el web scraping son el iniciador y el objetivo. El iniciador (web scraper) utiliza software de extracci\u00f3n autom\u00e1tica de datos para raspar sitios web. Los objetivos, por su parte, suelen ser el contenido del sitio web, informaci\u00f3n de contacto, formularios o cualquier cosa disponible p\u00fablicamente en la web.<\/p>\n\n\n\n<p><strong>El proceso t\u00edpico es el siguiente:&nbsp;<\/strong><\/p>\n\n\n\n<ul>\n<li><strong>PASO 1: <\/strong>El iniciador utiliza la herramienta de scraping: un software (que puede ser un servicio basado en la nube o un script casero) para empezar a generar peticiones HTTP (utilizadas para interactuar con sitios web y recuperar datos). Este software puede iniciar cualquier cosa, desde una solicitud HTTP GET, POST, PUT, DELETE o HEAD, hasta una solicitud OPTIONS a un sitio web de destino.&nbsp;<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_019.png\"><img decoding=\"async\" loading=\"lazy\" width=\"979\" height=\"526\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_019.png\" alt=\"c\u00f3mo funciona el web scraping\" class=\"wp-image-17251\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_019.png 979w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_019-300x161.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_019-18x10.png 18w\" sizes=\"(max-width: 979px) 100vw, 979px\" \/><\/a><\/figure>\n\n\n\n<ul>\n<li><strong>PASO 2.<\/strong> Si la p\u00e1gina existe, el sitio web de destino responder\u00eda a la solicitud del scraper con el HTTP\/1.0 200 OK (la respuesta t\u00edpica a los visitantes.) Cuando el scraper recibe la respuesta HTML (por ejemplo 200 OK), proceder\u00eda a analizar el documento y recopilar sus datos no estructurados.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_020.png\"><img decoding=\"async\" loading=\"lazy\" width=\"980\" height=\"525\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_020.png\" alt=\"an\u00e1lisis y recogida de datos\" class=\"wp-image-17252\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_020.png 980w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_020-300x161.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_020-18x10.png 18w\" sizes=\"(max-width: 980px) 100vw, 980px\" \/><\/a><\/figure>\n\n\n\n<ul>\n<li><strong>PASO 3<\/strong>. A continuaci\u00f3n, el software scraper extrae los datos en bruto, los almacena y a\u00f1ade estructura (\u00edndices) a los datos seg\u00fan lo especificado por el iniciador. Los datos estructurados son accesibles a trav\u00e9s de formatos legibles como XLS, CSV, SQL o XML.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web-Scraping-works-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"983\" height=\"534\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web-Scraping-works-1.png\" alt=\"estructuraci\u00f3n de datos\" class=\"wp-image-17254\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web-Scraping-works-1.png 983w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web-Scraping-works-1-300x163.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web-Scraping-works-1-18x10.png 18w\" sizes=\"(max-width: 983px) 100vw, 983px\" \/><\/a><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"02\">2. Fundamentos de la extracci\u00f3n de datos HTML: Selectores CSS y XPath.<\/h2>\n\n\n\n<p>Puede que ya conozcas lo b\u00e1sico: <strong><em>El web scraping consiste en extraer datos de sitios web, y todo comienza con HTML-.<\/em><\/strong>la columna vertebral de las p\u00e1ginas web. Dentro de un archivo HTML, encontrar\u00e1 clases e identificadores, tablas, listas, bloques o contenedores: todos ellos elementos b\u00e1sicos que conforman la estructura de una p\u00e1gina.<\/p>\n\n\n\n<p>CSS, por su parte, es un lenguaje de hojas de estilo utilizado para controlar la presentaci\u00f3n y el dise\u00f1o de los documentos HTML. Define c\u00f3mo se muestran los elementos HTML en una p\u00e1gina web, como colores, fuentes, m\u00e1rgenes y posicionamiento. CSS desempe\u00f1a un papel clave en el web scraping, ya que ayuda a extraer datos de los elementos deseados.&nbsp;<\/p>\n\n\n\n<p><strong><em>Nota: <\/em><\/strong><em>Explicar en detalle qu\u00e9 es HTML y CSS y c\u00f3mo funcionan, est\u00e1 fuera del alcance de este art\u00edculo. Asumimos que ya tienes los conocimientos fundamentales de HTML y CSS.&nbsp;<\/em><\/p>\n\n\n\n<p>Aunque ser\u00eda posible extraer datos directamente del HTML sin procesar utilizando diversas t\u00e9cnicas, como expresiones regulares, puede resultar realmente laborioso y complicado. Dado que el lenguaje estructurado de HTML se dise\u00f1\u00f3 para ser \"legible por m\u00e1quinas\", puede resultar muy complejo y variado. <strong>Aqu\u00ed es donde los selectores CSS y XPath desempe\u00f1an un papel fundamental.&nbsp;<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">a. Compilaci\u00f3n e inspecci\u00f3n de HTML.&nbsp;<\/h3>\n\n\n\n<p>En la siguiente secci\u00f3n, proporcionaremos algunos ejemplos de selectores CSS y XPath (compilados e inspeccionados). Todos los siguientes ejemplos HTML y CSS han sido compilados con el editor en l\u00ednea <a href=\"https:\/\/html-css-js.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">HTML-CSS-JS<\/a>.<\/p>\n\n\n\n<p><strong>A la hora de inspeccionar el c\u00f3digo HTML de los sitios web,<\/strong> Los navegadores web vienen con herramientas para desarrolladores, por lo que puedes inspeccionar literalmente el HTML o CSS que est\u00e1 disponible p\u00fablicamente en cualquier p\u00e1gina web. Puedes hacer clic con el bot\u00f3n derecho en una p\u00e1gina web y seleccionar \"Inspeccionar\", \"Inspeccionar elemento\" o \"Inspeccionar fuente\". Para comparar mejor la p\u00e1gina y la din\u00e1mica del c\u00f3digo, en el navegador Chrome &gt; ve a los tres puntos de la parte superior izquierda (1) &gt; M\u00e1s herramientas (2) &gt; Herramientas para desarrolladores (3).&nbsp;<\/p>\n\n\n\n<p>Las herramientas para desarrolladores incluyen un pr\u00e1ctico filtro de b\u00fasqueda (4) que permite buscar por cadena, selector o XPath. Como ejemplo, vamos a raspar algunos datos de: https:\/\/www.rapidseedbox.com\/blog\/twitter-facebook-scraper-guide.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_1-1024x513-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"513\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_1-1024x513-1.png\" alt=\"Conceptos b\u00e1sicos de raspado web\" class=\"wp-image-22062\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_1-1024x513-1.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_1-1024x513-1-300x150.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_1-1024x513-1-18x9.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">b. Selectores CSS:&nbsp;<\/h3>\n\n\n\n<p>Los selectores CSS son patrones utilizados para seleccionar y orientar los elementos HTML de una p\u00e1gina web. Son \u00fatiles para el web scraping (y el styling), ya que proporcionan una forma m\u00e1s eficiente y espec\u00edfica de obtener datos de documentos HTML. Aunque es posible extraer datos directamente del HTML sin procesar utilizando varias t\u00e9cnicas como expresiones regulares, los selectores CSS ofrecen varias ventajas que los convierten en la opci\u00f3n preferida para el web scraping.<\/p>\n\n\n\n<p><strong>T\u00e9cnicas de orientaci\u00f3n y selecci\u00f3n de elementos HTML dentro de una p\u00e1gina web:<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>i. Selecci\u00f3n de nodos.<\/strong><\/h4>\n\n\n\n<p>La selecci\u00f3n de nodos es el proceso de elegir elementos HTML bas\u00e1ndose en sus nombres de nodo. Por ejemplo, seleccionar todos los elementos 'p' o todos los elementos 'a ' de una p\u00e1gina. Esta t\u00e9cnica permite seleccionar tipos espec\u00edficos de elementos en el documento HTML.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_027.40.png\"><img decoding=\"async\" loading=\"lazy\" width=\"808\" height=\"159\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_027.40.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22256\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_027.40.png 808w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_027.40-300x59.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_027.40-18x4.png 18w\" sizes=\"(max-width: 808px) 100vw, 808px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_8.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"474\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_8-1024x474.png\" alt=\"Selectores CSS\" class=\"wp-image-17274\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_8-1024x474.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_8-300x139.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_8-18x8.png 18w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_8.png 1334w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Foto por <a href=\"https:\/\/html-css-js.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">HTML-CSS-JS<\/a><\/em><\/figcaption><\/figure>\n\n\n\n<p><strong>Ejemplo de la vida real:<\/strong> B\u00fasqueda manual de H2.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_11-1024x481-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"481\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_11-1024x481-1.png\" alt=\"Conceptos b\u00e1sicos del raspador web\" class=\"wp-image-22015\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_11-1024x481-1.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_11-1024x481-1-300x141.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_11-1024x481-1-18x8.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>ii. Clase.<\/strong><\/h4>\n\n\n\n<p>En los selectores CSS, la selecci\u00f3n de clase consiste en seleccionar elementos HTML en funci\u00f3n del atributo de clase que tengan asignado. El atributo class permite aplicar un nombre de clase espec\u00edfico a uno o m\u00e1s elementos. Adem\u00e1s en los estilos CSS o JavaScript, se puede aplicar a todos los elementos con esa clase. Ejemplos de nombres de \"clase\" son botones, elementos de formulario, men\u00fas de navegaci\u00f3n, dise\u00f1os de cuadr\u00edcula, etc.&nbsp;<\/p>\n\n\n\n<p><strong>Por ejemplo:<\/strong> El siguiente selector CSS: 'highlight' seleccionar\u00e1 todos los elementos cuyo atributo de clase sea \"highlight\".<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.00.png\"><img decoding=\"async\" loading=\"lazy\" width=\"807\" height=\"158\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.00.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22257\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.00.png 807w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.00-300x59.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.00-18x4.png 18w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.09.png\"><img decoding=\"async\" loading=\"lazy\" width=\"807\" height=\"185\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.09.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22258\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.09.png 807w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.09-300x69.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.09-18x4.png 18w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_10.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"464\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_10-1024x464.png\" alt=\"Selectores CSS\" class=\"wp-image-17276\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_10-1024x464.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_10-300x136.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_10-18x8.png 18w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_10.png 1440w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Foto por <a href=\"https:\/\/html-css-js.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">HTML-CSS-JS<\/a><\/em><\/figcaption><\/figure>\n\n\n\n<p><strong>Ejemplo de la vida real:&nbsp;<\/strong>B\u00fasqueda manual de clases.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_4-1024x507-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"507\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_4-1024x507-1.png\" alt=\"Conceptos b\u00e1sicos de raspado web\" class=\"wp-image-22033\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_4-1024x507-1.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_4-1024x507-1-300x149.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_4-1024x507-1-18x9.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>iii. Restricciones de identificaci\u00f3n.<\/strong><\/h4>\n\n\n\n<p>Las restricciones ID ayudan a seleccionar un elemento HTML bas\u00e1ndose en su atributo ID \u00fanico. Este atributo ID se utiliza para identificar de forma \u00fanica un \u00fanico elemento en la p\u00e1gina web. A diferencia de las clases, que pueden utilizarse en varios elementos, los ID deben ser \u00fanicos dentro de la p\u00e1gina.&nbsp;<\/p>\n\n\n\n<p><strong>Por ejemplo: <\/strong>El selector CSS '#header' seleccionar\u00e1 el elemento cuyo atributo ID sea \"header\".<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.22.png\"><img decoding=\"async\" loading=\"lazy\" width=\"805\" height=\"159\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.22.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22259\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.22.png 805w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.22-300x59.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.22-18x4.png 18w\" sizes=\"(max-width: 805px) 100vw, 805px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.46.png\"><img decoding=\"async\" loading=\"lazy\" width=\"807\" height=\"132\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.46.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22260\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.46.png 807w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.46-300x49.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_028.46-18x3.png 18w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_2.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"472\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_2-1024x472.png\" alt=\"Selectores CSS\" class=\"wp-image-17268\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_2-1024x472.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_2-300x138.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_2-18x8.png 18w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_2.png 1438w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Foto por <a href=\"https:\/\/html-css-js.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">HTML-CSS-JS<\/a><\/em><\/figcaption><\/figure>\n\n\n\n<p><strong>Ejemplo de la vida real:<\/strong> Buscar manualmente los identificadores. Despu\u00e9s de encontrar el #01 tendr\u00e1 que localizar el id=\"01\u2033.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-markers.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"520\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-markers.png\" alt=\"b\u00fasqueda de identificaciones\" class=\"wp-image-22473\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-markers.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-markers-300x152.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-markers-18x9.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>iv. Correspondencia de atributos.<\/strong><\/h4>\n\n\n\n<p>Esta t\u00e9cnica consiste en seleccionar elementos HTML bas\u00e1ndose en atributos espec\u00edficos y sus valores. Permite seleccionar elementos que tengan un atributo o valor de atributo concreto. Existen distintos tipos de concordancia de atributos, como la concordancia exacta, la concordancia de subcadenas, etc.<\/p>\n\n\n\n<p><strong>Por ejemplo: <\/strong>El siguiente ejemplo muestra un atributo personalizado llamado tipo de datos. Para seleccionar o aplicar estilo a determinados elementos (por ejemplo, elementos de lista marcados como \"fruta\") puede utilizar el selector CSS que selecciona elementos en funci\u00f3n de los valores de sus atributos.<\/p>\n\n\n\n<p>Para raspar s\u00f3lo los elementos marcados como \"fruta\", puede utilizar el siguiente selector CSS:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.16.png\"><img decoding=\"async\" loading=\"lazy\" width=\"807\" height=\"134\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.16.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22262\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.16.png 807w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.16-300x50.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.16-18x3.png 18w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_6.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"436\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_6-1024x436.png\" alt=\"Selectores CSS\" class=\"wp-image-17272\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_6-1024x436.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_6-300x128.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_6-18x8.png 18w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_6.png 1413w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Ejemplo de la vida real:<\/strong> B\u00fasqueda manual de atributos.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/data-type.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"487\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/data-type.png\" alt=\"b\u00fasqueda de atributos\" class=\"wp-image-22334\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/data-type.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/data-type-300x143.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/data-type-18x9.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">c. Selectores Xpath:<\/h3>\n\n\n\n<p>Los selectores CSS son ideales para tareas sencillas de web scraping en las que la estructura HTML es relativamente simple. Pero cuando la estructura HTML se vuelve m\u00e1s intrincada y compleja, existe otra soluci\u00f3n: Los selectores XPath.&nbsp;<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/www.w3schools.com\/xml\/xpath_syntax.asp\" target=\"_blank\" rel=\"noreferrer noopener\">Selectores XPath (selectores del lenguaje de rutas XML)<\/a> es un lenguaje de rutas flexible que se utiliza para navegar por los elementos de un documento XML o HTML. <\/strong>Ayudan a seleccionar nodos espec\u00edficos dentro del c\u00f3digo HTML bas\u00e1ndose en su ubicaci\u00f3n, nombres, atributos o contenido. Los selectores XPath tambi\u00e9n pueden ser \u00fatiles para seleccionar elementos bas\u00e1ndose en sus atributos de clase e ID.<\/p>\n\n\n\n<p><strong>He aqu\u00ed tres ejemplos de selectores XPath para web scraping.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>i. Ejemplo 1: Expresi\u00f3n XPath: ' \/\/a<\/strong><\/h4>\n\n\n\n<p>La expresi\u00f3n XPath ' \/\/a' selecciona todos los elementos '<a>' de la p\u00e1gina, independientemente de su ubicaci\u00f3n en el documento. La siguiente captura de pantalla muestra la localizaci\u00f3n manual de todos los elementos '<a>' de la p\u00e1gina.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/scraping-links.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"494\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/scraping-links.png\" alt=\"elementos de la p\u00e1gina\" class=\"wp-image-22425\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/scraping-links.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/scraping-links-300x145.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/scraping-links-18x9.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>ii. Ejemplo 2: ' \/\/h2[1]\/text()'<\/strong><\/h4>\n\n\n\n<p>La expresi\u00f3n XPath:<\/p>\n\n\n\n<p><strong>' \/\/h2[1]\/text() '<\/strong><\/p>\n\n\n\n<p>Seleccionar\u00e1 el contenido de texto del primer encabezado h2 de la p\u00e1gina. El \u00edndice '[1]' se utiliza para especificar la primera aparici\u00f3n del elemento h2, tambi\u00e9n puede especificar la segunda aparici\u00f3n con el \u00edndice '[2]', y as\u00ed sucesivamente. La siguiente captura de pantalla muestra la localizaci\u00f3n manual del primer encabezado h2 en la p\u00e1gina utilizando este selector XPath.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-headings.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-headings.png\" alt=\"selectores xpath - encabezados\" class=\"wp-image-22376\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-headings.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-headings-300x150.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/finding-headings-18x9.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>iii. Ejemplo 3. ' \/\/* [@data-type=\"form\"]'<\/strong><\/h4>\n\n\n\n<p>La expresi\u00f3n XPath ` \/\/* [@data-type=\"form\"]` selecciona todos los elementos que tienen un atributo data con el valor \"form\". El s\u00edmbolo `*` indica que cualquier elemento con el atributo data especificado ser\u00e1 seleccionado, independientemente de su nombre de nodo. La siguiente captura de pantalla muestra el proceso para localizar manualmente los elementos con el valor \"form\".<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_5-1024x479-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"479\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_5-1024x479-1.png\" alt=\"Conceptos b\u00e1sicos de raspado web\" class=\"wp-image-22011\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_5-1024x479-1.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_5-1024x479-1-300x140.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Basics_5-1024x479-1-18x8.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Inspeccionar visualmente y extraer datos manualmente de una p\u00e1gina HTML utilizando estos selectores CSS y XPath no s\u00f3lo puede llevar mucho tiempo, sino que tambi\u00e9n es propenso a errores. Adem\u00e1s, la extracci\u00f3n manual o visual de datos es totalmente inadecuada para la recopilaci\u00f3n de datos a gran escala o para tareas de scraping repetitivas. Aqu\u00ed es donde el scripting y la programaci\u00f3n son altamente beneficiosos.<\/p>\n\n\n\n<h4 class=\"wp-block-heading has-text-align-center\"><strong>Impulsa tu web scraping con proxies r\u00e1pidos, seguros y an\u00f3nimos de RapidSeedbox.<\/strong><\/h4>\n\n\n\n<div class=\"wp-block-group is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-2\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/www.rapidseedbox.com\/es\/proxy\/?blog=web-scraping\" style=\"background-color:#22c55e\"><strong>\u00a1Empieza a raspar!<\/strong><\/a><\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u00bfCu\u00e1les son los mejores lenguajes de programaci\u00f3n para el web scraping? <\/strong><\/h4>\n\n\n\n<p><strong>El lenguaje de programaci\u00f3n m\u00e1s popular para scraping es Python debido a sus librer\u00edas y paquetes (m\u00e1s sobre esto en la siguiente secci\u00f3n.) Otro lenguaje de programaci\u00f3n popular para <a href=\"https:\/\/www.rapidseedbox.com\/blog\/web-scraping-with-r\" target=\"_blank\" rel=\"noreferrer noopener\">web scraping es R<\/a>ya que tambi\u00e9n cuenta con un fant\u00e1stico conjunto de bibliotecas y frameworks compatibles.<\/strong> Adem\u00e1s, tambi\u00e9n merece la pena mencionar C#, un lenguaje de programaci\u00f3n popular que utilizan muchos raspadores web. Sitios web como ZenRows tienen gu\u00edas completas sobre <strong><a href=\"https:\/\/www.zenrows.com\/blog\/web-scraping-c-sharp\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00f3mo scrapear un sitio web en C#<\/a><\/strong>que facilita a los desarrolladores la comprensi\u00f3n del proceso y la puesta en marcha de sus propios proyectos.<\/p>\n\n\n\n<p>En aras de la simplicidad, esta gu\u00eda de web scraping se centrar\u00e1 en el web scraping con Python. Siga leyendo.<\/p>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"03\">3. Web Scraping con Python (con c\u00f3digo).<\/h2>\n\n\n\n<p><strong>\u00bfPor qu\u00e9 inspeccionar visualmente y extraer manualmente datos HTML mediante selectores CSS o selectores XPath cuando puedes utilizarlos de forma sistem\u00e1tica y autom\u00e1tica con lenguajes de programaci\u00f3n?  <\/strong><\/p>\n\n\n\n<p>Existen muchas bibliotecas y marcos de trabajo populares para el web scraping que admiten selectores CSS para facilitar la extracci\u00f3n de datos. Uno de los lenguajes de programaci\u00f3n m\u00e1s populares para el web scraping es <a href=\"https:\/\/www.python.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Python<\/a>para sus bibliotecas como <a href=\"https:\/\/www.crummy.com\/software\/BeautifulSoup\/bs4\/doc\/\" target=\"_blank\" rel=\"noreferrer noopener\">BeautifulSoup<\/a>, <a href=\"https:\/\/pypi.org\/project\/requests\/\" target=\"_blank\" rel=\"noreferrer noopener\">Solicitudes<\/a>, <a href=\"https:\/\/cssselect.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\">CSS-Select<\/a>, <a href=\"https:\/\/pypi.org\/project\/selenium\/\" target=\"_blank\" rel=\"noreferrer noopener\">Selenio<\/a>, y <a href=\"https:\/\/scrapy.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Chatarra<\/a>. <strong>Estas bibliotecas permiten a los raspadores web aprovechar los selectores CSS y XPath para extraer datos de forma eficaz.<\/strong> <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>BeautifulSoup.&nbsp;<\/strong><\/h4>\n\n\n\n<p>BeautifulSoup es uno de los paquetes Python m\u00e1s populares y potentes dise\u00f1ados para analizar documentos HTML y XML. Este paquete crea un \u00e1rbol de an\u00e1lisis sint\u00e1ctico de las p\u00e1ginas, lo que le permite extraer f\u00e1cilmente datos de HTML.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong><em>Dato Interesante! <\/em><\/strong><em>En la lucha contra COVID-19, <\/em><a href=\"https:\/\/github.com\/BlankerL\/DXY-COVID-19-Crawler\/blob\/master\/service\/crawler.py\" target=\"_blank\" rel=\"noreferrer noopener\"><em>DXY-COVID-19-Crawler de Jiabao Lin<\/em><\/a><em> utiliz\u00f3 BeautifulSoup para extraer datos valiosos de un sitio web m\u00e9dico chino. De este modo, ayud\u00f3 a los investigadores a controlar y comprender la propagaci\u00f3n del virus. [<a href=\"https:\/\/www.crummy.com\/software\/BeautifulSoup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Fuente<\/a>]<\/em><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Peticiones.&nbsp;<\/strong><\/h4>\n\n\n\n<p>Python <a href=\"https:\/\/pypi.org\/project\/requests\/\" target=\"_blank\" rel=\"noreferrer noopener\">Solicitudes<\/a> es una sencilla pero potente librer\u00eda HTTP. Es \u00fatil para hacer peticiones HTTP para recuperar datos de sitios web. \"Requests\" simplifica el proceso de env\u00edo de peticiones HTTP y el manejo de las respuestas en tu proyecto Python de web scraping.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">a. Tutorial para Web Scraping con Python (+ C\u00f3digo)<\/h3>\n\n\n\n<p>En este tutorial de web scraping con Python, obtendremos datos de un sitio web HTML de destino utilizando c\u00f3digo Python con los \"requests\" y la librer\u00eda BeautifulSoup.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Requisitos previos:<\/strong><\/h4>\n\n\n\n<p>Aseg\u00farese de que se cumplen los siguientes requisitos previos:<\/p>\n\n\n\n<ul>\n<li><strong>Entorno Python:<\/strong> Aseg\u00farese de tener <a href=\"https:\/\/www.python.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Python<\/a> instalado en su ordenador. Adem\u00e1s, aseg\u00farese de que puede ejecutar el script en su entorno Python preferido (por ejemplo, <a href=\"https:\/\/docs.python.org\/es\/3\/library\/idle.html\" target=\"_blank\" rel=\"noreferrer noopener\">IDLE<\/a> or <a href=\"https:\/\/jupyter.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cuaderno Jupyter<\/a>).&nbsp;<\/li>\n\n\n\n<li><strong>Biblioteca de solicitudes:<\/strong> Instala la librer\u00eda `requests`. Se utiliza para enviar peticiones HTTP GET a la URL especificada. Puedes instalarla usando `pip` ejecutando `pip install requests` en tu s\u00edmbolo del sistema o terminal.<\/li>\n\n\n\n<li><strong>Biblioteca BeautifulSoup: <\/strong>Instala la librer\u00eda `beautifulsoup4`. Puedes instalarla usando `pip` ejecutando `pip install beautifulsoup4` en tu terminal.<\/li>\n<\/ul>\n\n\n\n<p><strong>El c\u00f3digo Python para el web scraping de datos de una p\u00e1gina (con BeautifulSoup)<\/strong><\/p>\n\n\n\n<p>El siguiente script obtendr\u00e1 la URL especificada, analizar\u00e1 el contenido HTML utilizando BeautifulSoup e imprimir\u00e1 los t\u00edtulos de los principales art\u00edculos de noticias de la p\u00e1gina web.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.56.png\"><img decoding=\"async\" loading=\"lazy\" width=\"808\" height=\"568\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.56.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22263\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.56.png 808w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.56-300x211.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_029.56-18x12.png 18w\" sizes=\"(max-width: 808px) 100vw, 808px\" \/><\/a><\/figure>\n\n\n\n<p>Cuando se ejecuta el script en IDLE Shell, la pantalla imprime todos los \"news_titles\" recopilados del sitio web objetivo. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/script-on-idle-shell-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/script-on-idle-shell-1-1024x512.png\" alt=\"ejecutando script en IDLE shell\" class=\"wp-image-28662\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/script-on-idle-shell-1-1024x512.png 1024w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/script-on-idle-shell-1-300x150.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/script-on-idle-shell-1-18x9.png 18w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/script-on-idle-shell-1.png 1365w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">b. Variaciones de nuestro c\u00f3digo Python para el web scraping.&nbsp;<\/h3>\n\n\n\n<p>Podemos tomar nuestro anterior c\u00f3digo Python de raspado web y hacer algunas variaciones para raspar diferentes tipos de datos.&nbsp;<\/p>\n\n\n\n<p><strong>Por ejemplo:&nbsp;<\/strong><\/p>\n\n\n\n<ul>\n<li><strong>Encontrar im\u00e1genes: <\/strong>Para encontrar todas las etiquetas de imagen (<img>) en la p\u00e1gina web, puede utilizar el m\u00e9todo find_all() con el nombre de etiqueta 'img':<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.21.png\"><img decoding=\"async\" loading=\"lazy\" width=\"805\" height=\"208\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.21.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22264\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.21.png 805w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.21-300x78.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.21-18x5.png 18w\" sizes=\"(max-width: 805px) 100vw, 805px\" \/><\/a><\/figure>\n\n\n\n<ul>\n<li><strong>Encontrar enlaces: <\/strong>Para encontrar todas las etiquetas de anclaje (<a>) que representan enlaces en la p\u00e1gina web, puede utilizar el m\u00e9todo find_all() con el nombre de etiqueta 'a':<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.28.png\"><img decoding=\"async\" loading=\"lazy\" width=\"806\" height=\"210\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.28.png\" alt=\"Ejemplo de Web Scraping\" class=\"wp-image-22265\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.28.png 806w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.28-300x78.png 300w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/Web_Scraping_Examples_030.28-18x5.png 18w\" sizes=\"(max-width: 806px) 100vw, 806px\" \/><\/a><\/figure>\n\n\n\n<p>El script proporcionado (junto con variaciones) es un script b\u00e1sico de web scraping. Simplemente extrae e imprime los t\u00edtulos de los principales art\u00edculos de noticias de la URL especificada. Pero, por desgracia, este sencillo script carece de muchas caracter\u00edsticas que conforman un proyecto de web scraping m\u00e1s completo. <strong><em>Hay varios elementos que podr\u00eda considerar a\u00f1adir: almacenamiento de datos, gesti\u00f3n de errores, paginaci\u00f3n\/rastreo, uso de agentes de usuario y cabeceras, medidas de estrangulamiento y cortes\u00eda, y capacidad para gestionar contenidos din\u00e1micos.<\/em><\/strong>&nbsp;<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"06\">4. \u00bfEs legal el Web Scraping?&nbsp;<\/h2>\n\n\n\n<p>El web scraping suele percibirse como algo controvertido o ilegal. Pero en realidad es una pr\u00e1ctica leg\u00edtima que, si se atiene a ciertos l\u00edmites \u00e9ticos y legales, es perfectamente legal. <\/p>\n\n\n\n<p>La legalidad del web scraping depende de la naturaleza de los datos extra\u00eddos y de los m\u00e9todos utilizados. <strong>El web scraping se considera l\u00edcito cuando se utiliza para recopilar informaci\u00f3n disponible p\u00fablicamente en Internet. <\/strong>Sin embargo, siempre hay que tener cuidado, sobre todo cuando se trata de datos personales o contenidos protegidos por derechos de autor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>He aqu\u00ed algunos consejos a tener en cuenta:<\/strong><\/h3>\n\n\n\n<ul>\n<li><strong>No extraiga datos privados. <\/strong>Tambi\u00e9n es ilegal extraer datos que no est\u00e9n disponibles p\u00fablicamente. Extraer datos detr\u00e1s de una p\u00e1gina de inicio de sesi\u00f3n, con usuario y contrase\u00f1a de acceso, es ilegal en Estados Unidos, Canad\u00e1 y la mayor parte de Europa.&nbsp;<\/li>\n\n\n\n<li><strong>Lo que hagas con los datos es lo que puede meterte en problemas.<\/strong> El \"web scraping\" \u00e9tico implica ser consciente de los datos que se recogen y de su finalidad. Debe prestarse especial atenci\u00f3n a los datos personales y a la propiedad intelectual. Aseg\u00farese de cumplir normativas como el GDPR y la CCPA, que regulan el tratamiento de los datos personales. Por ejemplo, la reutilizaci\u00f3n o reventa de contenidos o la descarga de material protegido por derechos de autor es ilegal (y debe evitarse).<\/li>\n\n\n\n<li><strong>Tambi\u00e9n es esencial revisar las condiciones de servicio de los sitios web. <\/strong>Se trata de documentos que indican a quienes utilizan sus servicios o contenidos c\u00f3mo deben y no deben interactuar con los recursos. <\/li>\n\n\n\n<li><strong>Garantice siempre alternativas como el uso de las API proporcionadas oficialmente.<\/strong> Algunos sitios web, como agencias gubernamentales, meteorol\u00f3gicas y plataformas de redes sociales, ponen algunos de sus datos a disposici\u00f3n del p\u00fablico a trav\u00e9s de API.&nbsp;<\/li>\n\n\n\n<li><strong>Considere la posibilidad de comprobar el archivo robots.txt.<\/strong> This file is saved on the web server and gives directions to web crawlers and web scraping about what parts of a website to avoid and what parts are authorized. It also gives directions about the <a href=\"https:\/\/www.rapidseedbox.com\/blog\/web-scraping-rate-limiting\" target=\"_blank\" rel=\"noreferrer noopener\">rate limits<\/a>. <\/li>\n\n\n\n<li><strong>Evite iniciar ataques de web scraping.&nbsp;<\/strong>Dependiendo del contexto, a veces el web scraping se denomina ataque de scraping. Cuando los spammers utilizan botnets (ej\u00e9rcitos de bots) para atacar un sitio web con peticiones grandes y r\u00e1pidas, el servicio de todo el sitio web puede fallar. Los raspados de datos a gran escala pueden provocar la ca\u00edda de sitios web enteros.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Noticias recientes sobre los aspectos jur\u00eddicos del web scraping.<\/strong><\/h3>\n\n\n\n<p><strong> <\/strong>Recientes sentencias judiciales han aclarado que, en general, el raspado de datos de acceso p\u00fablico no se considera una infracci\u00f3n. Una sentencia hist\u00f3rica del Tribunal de Apelaciones de Estados Unidos reafirm\u00f3 la legalidad del web scraping, al afirmar que el raspado de datos de acceso p\u00fablico en Internet no infringe la Ley de Fraude y Abuso Inform\u00e1tico (CFAA) [fuente: <a href=\"https:\/\/techcrunch.com\/2022\/04\/18\/web-scraping-legal-court\/\" target=\"_blank\" rel=\"noreferrer noopener\">TechCrunch<\/a>].<\/p>\n\n\n\n<p>En otro orden de cosas, las recientes demandas contra OpenAI y Microsoft ponen de manifiesto la preocupaci\u00f3n por la privacidad, la propiedad intelectual y las leyes contra el pirateo inform\u00e1tico, seg\u00fan noticias recientes [<a href=\"https:\/\/news.bloomberglaw.com\/ip-law\/openais-legal-woes-driven-by-unclear-mesh-of-web-scraping-laws\" target=\"_blank\" rel=\"noreferrer noopener\">Bloomberg<\/a>]. Aunque la CFAA tiene una eficacia limitada, se est\u00e1n estudiando las reclamaciones por incumplimiento de contrato y las leyes estatales sobre privacidad. La interacci\u00f3n entre los derechos de autor y el derecho contractual sigue sin resolverse, lo que deja muchas preguntas sin respuesta en el contexto del web scraping.<\/p>\n\n\n\n<p>En las \u00faltimas noticias, [fuente: <a href=\"https:\/\/timesofindia.indiatimes.com\/gadgets-news\/explained-what-is-data-scraping-and-why-elon-musk-is-changing-twitter-rules-over-it\/articleshow\/101451275.cms\" target=\"_blank\" rel=\"noreferrer noopener\">IndiaTimes<\/a>] Elon Musk est\u00e1 cambiando las normas de Twitter para evitar niveles extremos de scraping de datos. Seg\u00fan Musk, el web scraping extremo afecta negativamente a la experiencia del usuario. Sugiri\u00f3 que las organizaciones que utilizan grandes modelos ling\u00fc\u00edsticos para la IA generativa eran las culpables. <\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"08\">5. \u00bfC\u00f3mo intentan los sitios web bloquear el web scraping?&nbsp;<\/h2>\n\n\n\n<p>Las empresas quieren que algunos de sus datos sean accesibles para los visitantes humanos. Pero cuando las empresas o los usuarios utilizan scripts automatizados o bots para extraer agresivamente datos del sitio, puede haber mucho abuso de la privacidad y de los recursos en un servidor web y una p\u00e1gina objetivo. Estos sitios v\u00edctimas prefieren disuadir este tipo de tr\u00e1fico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"09\">T\u00e9cnicas Anti-Scraping.<\/h3>\n\n\n\n<ul>\n<li><strong>Cantidades inusuales y elevadas de tr\u00e1fico de una sola fuente.&nbsp;<\/strong>Los servidores web pueden utilizar WAF (Web Application Firewalls) con listas negras de direcciones IP ruidosas para bloquear el tr\u00e1fico, filtros sobre tasas y tama\u00f1os de solicitudes \"inusuales\" y mecanismos de filtrado. Algunos sitios utilizan una combinaci\u00f3n de WAF y CDN (redes de distribuci\u00f3n de contenidos) para filtrar totalmente o reducir el ruido de esas IP. <\/li>\n\n\n\n<li><strong>Algunos sitios web pueden detectar patrones de navegaci\u00f3n similares a los de los robots.<\/strong>&nbsp;De forma similar a la t\u00e9cnica anterior, los sitios web tambi\u00e9n bloquean las solicitudes en funci\u00f3n del User-Agent (encabezado HTTP). Los bots no utilizan un navegador normal. Estos bots tienen diferentes cadenas de user-agent (es decir, crawler, spider o bot), una falta de variaci\u00f3n, una ausencia de cabeceras (<a href=\"https:\/\/www.rapidseedbox.com\/blog\/headless-browser-guide\" target=\"_blank\" rel=\"noreferrer noopener\">navegadores sin cabeza<\/a>), solicitar tarifas, etc. <\/li>\n\n\n\n<li><strong>Los sitios web tambi\u00e9n cambian a menudo su marcado HTML.<\/strong> Los robots de raspado web siguen una ruta coherente de \"marcado HTML\" cuando recorren el contenido de un sitio web. Algunos sitios web cambian los elementos HTML del marcado de forma regular y aleatoria. Esta t\u00e9cnica desv\u00eda a un bot de su h\u00e1bito o programa habitual de raspado. Cambiar el marcado HTML no detiene el web scraping, pero lo hace mucho m\u00e1s dif\u00edcil.&nbsp;<\/li>\n\n\n\n<li><strong>El uso de retos como el CAPTCHA.<\/strong> Para evitar que los robots utilicen navegadores sin cabeza, algunos sitios web requieren retos CAPTCHA. Los robots que utilizan navegadores sin cabeza tienen dificultades para resolver este tipo de retos. Los CAPTCHA se crearon para ser resueltos por el usuario (a trav\u00e9s del navegador) y no por robots.&nbsp;<\/li>\n\n\n\n<li><strong>Algunos sitios son trampas (honeypots) para bots de raspado. <\/strong>Algunos sitios web se crean \u00fanicamente para atrapar bots de raspado, una t\u00e9cnica conocida como honeypots. Estos honeypots s\u00f3lo son visibles para los bots de scraping (no para los visitantes humanos ordinarios) y se construyen para llevar a los scrapers web a una trampa.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"010\">6. Pr\u00e1cticas \u00e9ticas y recomendadas para el Web Scraping.<\/h2>\n\n\n\n<p><strong>El \"web scraping\" debe hacerse de forma responsable y \u00e9tica<\/strong>. Como ya se ha mencionado, leer los T\u00e9rminos y Condiciones o ToS deber\u00eda darle una idea de las restricciones a las que debe atenerse. Si quieres hacerte una idea de las reglas de un rastreador web, consulta su ROBOTS.txt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"435\" height=\"235\" src=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/image6-2.png\" alt=\"Robots.txt Web scraping \u00e9tico. \" class=\"wp-image-11405\" srcset=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/image6-2.png 435w, https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/image6-2-300x162.png 300w\" sizes=\"(max-width: 435px) 100vw, 435px\" \/><\/figure>\n\n\n\n<p><strong>Si el web scraping est\u00e1 totalmente prohibido o bloqueado, utilice su API (si est\u00e1 disponible).<\/strong><\/p>\n\n\n\n<p>Adem\u00e1s, hay que tener en cuenta el ancho de banda del sitio web de destino para evitar sobrecargar el servidor con demasiadas peticiones. Es crucial automatizar las peticiones con un ritmo y unos tiempos de espera adecuados para evitar sobrecargar el servidor de destino. La simulaci\u00f3n de un usuario en tiempo real deber\u00eda ser \u00f3ptima. Adem\u00e1s, nunca se deben raspar datos detr\u00e1s de las p\u00e1ginas de inicio de sesi\u00f3n.<\/p>\n\n\n\n<p>Sigue las normas y no te pasar\u00e1 nada.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"011\">Buenas pr\u00e1cticas de raspado web.&nbsp;<\/h3>\n\n\n\n<ul>\n<li><strong>Utilice un proxy.&nbsp;<\/strong>Un proxy es un servidor intermediario que reenv\u00eda peticiones. Cuando se hace web scraping con un proxy, se enruta la petici\u00f3n original a trav\u00e9s de \u00e9l. As\u00ed, el proxy mapea la petici\u00f3n con su propia IP y la reenv\u00eda al sitio web de destino. Utilice un proxy para:\n<ul>\n<li><strong>Elimine las posibilidades de que su IP sea incluida en una lista negra o bloqueada.<\/strong>&nbsp;Siempre hacer peticiones a trav\u00e9s de varios proxies- <a href=\"https:\/\/www.rapidseedbox.com\/es\/proxy\/?blog=web-scraping\" target=\"_blank\" rel=\"noreferrer noopener\">proxies IPv6.<\/a>&nbsp;son un buen ejemplo. Un grupo de proxy puede ayudarle a realizar solicitudes de mayor volumen sin que se bloqueen.&nbsp;<\/li>\n\n\n\n<li><strong>Eludir los contenidos adaptados geogr\u00e1ficamente.<\/strong>&nbsp;Un proxy en una regi\u00f3n espec\u00edfica es \u00fatil para el scraping de datos seg\u00fan esa regi\u00f3n geogr\u00e1fica concreta. Esto es \u00fatil cuando los sitios web y los servicios est\u00e1n detr\u00e1s de una CDN.&nbsp;<\/li>\n\n\n\n<li><strong>Rotaci\u00f3n de apoderados.<\/strong> Los proxies rotatorios toman (rotan) una nueva IP del pool para cada nueva conexi\u00f3n. Tenga en cuenta que <a href=\"https:\/\/www.rapidseedbox.com\/es\/blog\/vpn-vs-proxy\" target=\"_blank\" rel=\"noreferrer noopener\">Las VPN no son proxies.<\/a> Aunque hacen algo muy parecido, que es proporcionar anonimato, funcionan a niveles diferentes. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n<li><strong>Gire<\/strong> <strong>UA (agentes de usuario) y cabeceras de solicitud HTTP.&nbsp;<\/strong>Para rotar UAs y cabeceras HTTP, necesitar\u00edas recopilar una lista de cadenas UA de navegadores web reales. Pon la lista en tu c\u00f3digo de web scraping en Python y configura las peticiones para que elijan cadenas aleatorias.<\/li>\n\n\n\n<li><strong>No sobrepases los l\u00edmites.&nbsp;<\/strong>Reduzca el n\u00famero de solicitudes, rote y aleatorice. Si est\u00e1 realizando un gran n\u00famero de solicitudes para un sitio web, empiece por aleatorizar las cosas. Haz que cada petici\u00f3n parezca aleatoria y humana. En primer lugar, cambie la IP de cada solicitud con la ayuda de proxies rotatorios. Adem\u00e1s, utiliza diferentes cabeceras HTTP para que parezca que las peticiones proceden de otros navegadores.&nbsp;<\/li>\n<\/ul>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Impulsa tu web scraping con proxies r\u00e1pidos, seguros y an\u00f3nimos de RapidSeedbox.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-4\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/www.rapidseedbox.com\/es\/proxy\/?blog=web-scraping\" style=\"background-color:#22c55e\"><strong>\u00a1Empieza a raspar!<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"07\">7. Web Scraping FAQ: Preguntas m\u00e1s frecuentes. <\/h2>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>a. \u00bfQu\u00e9 es robots.txt y qu\u00e9 papel desempe\u00f1a en el web scraping?&nbsp;<\/strong><\/h4>\n\n\n\n<p>El archivo `robots.txt` sirve como herramienta de comunicaci\u00f3n entre propietarios de sitios web, rastreadores web y \"scrapers\". Se trata de un archivo de texto colocado en el servidor de un sitio web que proporciona instrucciones a los robots web (rastreadores, ara\u00f1as web y otros robots automatizados) sobre las partes del sitio web a las que pueden acceder y raspar, y las que deben evitar. \"Los robots de rastreo que se comportan bien (como Googlebot) est\u00e1n dise\u00f1ados para leer autom\u00e1ticamente el archivo robots.txt. Los raspadores no est\u00e1n dise\u00f1ados para leer este archivo. Por lo tanto, es muy importante conocer el archivo robots.txt para respetar los deseos del propietario del sitio web.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>b. \u00bfQu\u00e9 t\u00e9cnicas utilizan los administradores de sitios web para evitar intentos \"abusivos\" o \"no autorizados\" de web scraping?<\/strong><\/h4>\n\n\n\n<p>No todos los scrapers extraen datos de forma \u00e9tica y legal. No respetan las condiciones de servicio del sitio ni las directrices de robots.txt. Por ello, los administradores de sitios web pueden tomar medidas adicionales para proteger sus datos y recursos, como el bloqueo de IP o los desaf\u00edos CAPTCHA. Tambi\u00e9n pueden utilizar medidas de limitaci\u00f3n de velocidad, verificaci\u00f3n del agente de usuario (para identificar posibles bots), seguimiento de sesiones, autenticaci\u00f3n basada en tokens, redes de distribuci\u00f3n de contenidos (CDN) o incluso sistemas de detecci\u00f3n basados en el comportamiento.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>c. Web Scraping vs. Web Crawling?<\/strong><\/h4>\n\n\n\n<p>Aunque tanto el web scraping como el web crawling son t\u00e9cnicas de extracci\u00f3n de datos web, tienen finalidades, alcances, automatizaci\u00f3n y aspectos legales diferentes. Por un lado, las t\u00e9cnicas de web scraping tienen por objeto extraer datos espec\u00edficos de sitios concretos. Son selectivas y tienen un alcance espec\u00edfico y limitado. El web scraping utiliza scripts automatizados o herramientas de terceros para solicitar, recibir, analizar, extraer y estructurar datos. Las t\u00e9cnicas de rastreo web (como <a href=\"https:\/\/www.rapidseedbox.com\/blog\/list-crawling\" target=\"_blank\" rel=\"noreferrer noopener\">rastreo de listas<\/a>), por su parte, se utilizan para buscar sistem\u00e1ticamente en la web. Son populares entre los motores de b\u00fasqueda (de mayor alcance), las plataformas de medios sociales, los investigadores, los agregadores de contenidos, etc. Los rastreadores web pueden visitar muchos sitios autom\u00e1ticamente (a trav\u00e9s de bots, crawlers o ara\u00f1as), construir una lista, indexar datos (crear una copia) y almacenarlos en una base de datos. Los rastreadores web suelen comprobar los archivos ROBOTS.txt.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>d. Data mining vs Data scraping: \u00bfCu\u00e1les son sus diferencias y similitudes?<\/strong><\/h4>\n\n\n\n<p>Tanto la miner\u00eda de datos como el raspado de datos implican la extracci\u00f3n de datos. Sin embargo, la miner\u00eda de datos se centra en el uso de t\u00e9cnicas estad\u00edsticas y de aprendizaje autom\u00e1tico para analizar conjuntos de datos estructurados. Su objetivo es identificar patrones, relaciones y perspectivas en conjuntos de datos estructurados grandes y complejos. El \"scraping\" de datos, por su parte, se centra en \"la parte de recopilaci\u00f3n\" de informaci\u00f3n espec\u00edfica de p\u00e1ginas y sitios web. Ambas t\u00e9cnicas y herramientas pueden utilizarse conjuntamente. El web scraping puede ser un paso preliminar para recopilar datos de la web, que luego se introducen en algoritmos de miner\u00eda de datos para un an\u00e1lisis en profundidad y el descubrimiento de insights.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>e. \u00bfQu\u00e9 es el Screen Scraping?  \u00bfY qu\u00e9 relaci\u00f3n tiene con el Data Scraping?<\/strong><\/h4>\n\n\n\n<p>Ambas t\u00e9cnicas se centran en la extracci\u00f3n de datos, pero difieren en el tipo de datos que extraen. <a href=\"https:\/\/www.rapidseedbox.com\/blog\/screen-scraping\" target=\"_blank\" rel=\"noreferrer noopener\">Raspado de pantalla<\/a> tienen como objetivo capturar y extraer \"autom\u00e1ticamente\" los datos visuales que aparecen en sitios web y documentos, incluido el texto de la pantalla. A diferencia del web scraping, que analiza datos de HTML (extrayendo as\u00ed una amplia gama de datos web), el screen scraping lee datos de texto directamente de la pantalla.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>f. \u00bfEs lo mismo Web Harvesting que Web Scraping?<\/strong><\/h4>\n\n\n\n<p>El raspado de datos y el web harvesting est\u00e1n estrechamente relacionados y a menudo se utilizan indistintamente, pero no son el mismo concepto. El web harvesting tiene una connotaci\u00f3n m\u00e1s amplia. Abarca diferentes m\u00e9todos de extracci\u00f3n de datos de la web, incluidos varios mecanismos autom\u00e1ticos de extracci\u00f3n web, como el web scraping. Una distinci\u00f3n clara es que el web harvesting se utiliza a menudo cuando est\u00e1 implicada una API, en lugar de analizar directamente el c\u00f3digo HTML de las p\u00e1ginas web (como hace el web scraping).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>g. Selector CSS vs Selector XPath:  \u00bfCu\u00e1les son las diferencias en el scraping?&nbsp;<\/strong><\/h4>\n\n\n\n<p>Los selectores CSS son una forma eficaz de extraer datos durante el scraping web. Ofrecen una sintaxis sencilla y funcionan bien en la mayor\u00eda de los escenarios de scraping. Sin embargo, en casos m\u00e1s complejos o cuando se trata de estructuras anidadas, los selectores XPath pueden proporcionar flexibilidad y funcionalidad adicionales. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>h. \u00bfC\u00f3mo manejar sitios web din\u00e1micos con Selenium?<\/strong><\/h4>\n\n\n\n<p>Selenium es una potente herramienta para el web scraping de sitios web din\u00e1micos. Le permite interactuar con elementos de la p\u00e1gina web como lo har\u00eda un usuario humano. Esta capacidad permite a su \"script\" navegar por contenidos generados din\u00e1micamente. Mediante el uso de <a href=\"https:\/\/www.selenium.dev\/documentation\/webdriver\/\" target=\"_blank\" rel=\"noreferrer noopener\">WebDriver de Selenium<\/a>puede esperar a que se carguen los elementos de la p\u00e1gina, interactuar con elementos AJAX y extraer datos de sitios web que dependen en gran medida de JavaScript.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>i<\/strong>.<strong> \u00bfC\u00f3mo manejar AJAX y JavaScript durante el Web Scraping?<\/strong><\/h4>\n\n\n\n<p>Cuando se trata de AJAX y JavaScript durante el web scraping, las librer\u00edas tradicionales como Requests y Beautiful Soup pueden no ser suficientes. Para gestionar las solicitudes AJAX y el contenido renderizado en JavaScript, puede utilizar herramientas como Selenium o navegadores headless como <a href=\"https:\/\/pptr.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">Titiritero<\/a>. <\/p>\n\n\n\n<div style=\"height:18px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"012\">8. Palabras Finales.&nbsp;<\/h2>\n\n\n\n<p>\u00a1Enhorabuena! \u00a1Has completado la gu\u00eda definitiva para el web scraping! <\/p>\n\n\n\n<p>Esperamos que esta gu\u00eda le haya proporcionado los conocimientos y herramientas necesarios para aprovechar el potencial del web scraping en sus proyectos. <\/p>\n\n\n\n<p><strong>Recuerda que un gran poder conlleva una gran responsabilidad.<\/strong> Al iniciar su viaje por el web scraping, d\u00e9 siempre prioridad a las pr\u00e1cticas \u00e9ticas, respete las condiciones de servicio de los sitios web y sea consciente de la privacidad de los datos. <\/p>\n\n\n\n<p>Hemos tocado la punta del iceberg. Web Scraping puede ser un tema bastante amplio. Pero bueno, \u00a1ya has raspado un sitio web! <\/p>\n\n\n\n<p>El aprendizaje continuo y el estar al d\u00eda de las \u00faltimas tecnolog\u00edas y novedades jur\u00eddicas le permitir\u00e1n desenvolverse en este complejo mundo. <\/p>\n\n\n\n<p>Inspeccionar visualmente y extraer datos manualmente de una p\u00e1gina HTML utilizando estos selectores CSS y XPath no s\u00f3lo puede llevar mucho tiempo, sino que tambi\u00e9n es propenso a errores. Adem\u00e1s, la extracci\u00f3n manual o visual de datos es totalmente inadecuada para la recopilaci\u00f3n de datos a gran escala o para tareas de scraping repetitivas. Aqu\u00ed es donde el scripting y la programaci\u00f3n son altamente beneficiosos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Tanto si eres un principiante con curiosidad por el concepto como un programador experimentado que busca mejorar sus habilidades, esta gu\u00eda tiene algo valioso para todos. Desde la comprensi\u00f3n de los fundamentos de la extracci\u00f3n de datos HTML utilizando selectores CSS y XPath hasta la pr\u00e1ctica del web scraping con Python, tenemos todo cubierto. Adem\u00e1s, abordaremos los aspectos legales, las consideraciones \u00e9ticas y las mejores pr\u00e1cticas para garantizar un scraping web responsable. <\/p>","protected":false},"author":145,"featured_media":25091,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[39],"tags":[410,735,319,320],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The Ultimate Guide to Web Scraping [Updated]<\/title>\n<meta name=\"description\" content=\"In this post, you&#039;ll learn about web scraping. What is its legal context? what are the techniques used to stop it, and how to bypass them?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.rapidseedbox.com\/es\/blog\/web-scraping\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Ultimate Guide to Web Scraping [Updated]\" \/>\n<meta property=\"og:description\" content=\"In this post, you&#039;ll learn about web scraping. What is its legal context? what are the techniques used to stop it, and how to bypass them?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.rapidseedbox.com\/es\/blog\/web-scraping\" \/>\n<meta property=\"og:site_name\" content=\"RapidSeedbox\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RapidSeedbox\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-18T13:15:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-28T18:31:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"623\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Diego Asturias\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rapidseedbox\" \/>\n<meta name=\"twitter:site\" content=\"@rapidseedbox\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diego Asturias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Ultimate Guide to Web Scraping [Updated]","description":"In this post, you'll learn about web scraping. What is its legal context? what are the techniques used to stop it, and how to bypass them?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.rapidseedbox.com\/es\/blog\/web-scraping","og_locale":"es_ES","og_type":"article","og_title":"The Ultimate Guide to Web Scraping [Updated]","og_description":"In this post, you'll learn about web scraping. What is its legal context? what are the techniques used to stop it, and how to bypass them?","og_url":"https:\/\/www.rapidseedbox.com\/es\/blog\/web-scraping","og_site_name":"RapidSeedbox","article_publisher":"https:\/\/www.facebook.com\/RapidSeedbox\/","article_published_time":"2020-12-18T13:15:21+00:00","article_modified_time":"2025-10-28T18:31:07+00:00","og_image":[{"width":1200,"height":623,"url":"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/web-scraping.png","type":"image\/png"}],"author":"Diego Asturias","twitter_card":"summary_large_image","twitter_creator":"@rapidseedbox","twitter_site":"@rapidseedbox","twitter_misc":{"Escrito por":"Diego Asturias","Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.rapidseedbox.com\/blog\/web-scraping#article","isPartOf":{"@id":"https:\/\/www.rapidseedbox.com\/blog\/web-scraping"},"author":{"name":"Diego Asturias","@id":"https:\/\/www.rapidseedbox.com\/#\/schema\/person\/a942bef3ef57b90e360766fc06a4fc7f"},"headline":"The Ultimate Guide to Web Scraping [Updated]","datePublished":"2020-12-18T13:15:21+00:00","dateModified":"2025-10-28T18:31:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.rapidseedbox.com\/blog\/web-scraping"},"wordCount":4613,"commentCount":0,"publisher":{"@id":"https:\/\/www.rapidseedbox.com\/#organization"},"keywords":["francais","indonesian","proxy","web scraping"],"articleSection":["blog"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.rapidseedbox.com\/blog\/web-scraping#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.rapidseedbox.com\/blog\/web-scraping","url":"https:\/\/www.rapidseedbox.com\/blog\/web-scraping","name":"The Ultimate Guide to Web Scraping [Updated]","isPartOf":{"@id":"https:\/\/www.rapidseedbox.com\/#website"},"datePublished":"2020-12-18T13:15:21+00:00","dateModified":"2025-10-28T18:31:07+00:00","description":"In this post, you'll learn about web scraping. What is its legal context? what are the techniques used to stop it, and how to bypass them?","breadcrumb":{"@id":"https:\/\/www.rapidseedbox.com\/blog\/web-scraping#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.rapidseedbox.com\/blog\/web-scraping"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.rapidseedbox.com\/blog\/web-scraping#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.rapidseedbox.com\/"},{"@type":"ListItem","position":2,"name":"blog","item":"https:\/\/www.rapidseedbox.com\/category\/blog"},{"@type":"ListItem","position":3,"name":"The Ultimate Guide to Web Scraping [Updated]"}]},{"@type":"WebSite","@id":"https:\/\/www.rapidseedbox.com\/#website","url":"https:\/\/www.rapidseedbox.com\/","name":"RapidSeedbox","description":"Seedbox &amp; Dedicated Server provider focused on delivering fast peer-to-peer BitTorrent protocol-based file transfer on remote high-end servers.","publisher":{"@id":"https:\/\/www.rapidseedbox.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.rapidseedbox.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.rapidseedbox.com\/#organization","name":"RapidSeedbox","url":"https:\/\/www.rapidseedbox.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.rapidseedbox.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/logoonly.png","contentUrl":"https:\/\/www.rapidseedbox.com\/wp-content\/uploads\/logoonly.png","width":259,"height":261,"caption":"RapidSeedbox"},"image":{"@id":"https:\/\/www.rapidseedbox.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RapidSeedbox\/","https:\/\/twitter.com\/rapidseedbox","https:\/\/www.linkedin.com\/company\/rapidseedbox","https:\/\/www.youtube.com\/@rapidseedbox"]},{"@type":"Person","@id":"https:\/\/www.rapidseedbox.com\/#\/schema\/person\/a942bef3ef57b90e360766fc06a4fc7f","name":"Diego Asturias","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.rapidseedbox.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5473e3ab660a5d167e3a25350e963690?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5473e3ab660a5d167e3a25350e963690?s=96&d=mm&r=g","caption":"Diego Asturias"},"description":"Diego Asturias is a tech journalist who translates complex tech jargon into engaging content. He has a degree in Internetworking Tech from Washington DC, US, and tech certifications from Cisco, McAfee, and Wireshark. He has hands-on experience working in Latin America, South Korea, and West Africa. He has been featured in SiliconANGLE Media, Cloudbric, Pcwdld, Hackernoon, ITT Systems, SecurityGladiators, Rapidseedbox, and more.","sameAs":["https:\/\/www.linkedin.com\/in\/diego-asturias-035a539\/"],"url":"https:\/\/www.rapidseedbox.com\/author\/diego"}]}},"_links":{"self":[{"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/posts\/11399"}],"collection":[{"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/users\/145"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/comments?post=11399"}],"version-history":[{"count":10,"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/posts\/11399\/revisions"}],"predecessor-version":[{"id":41715,"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/posts\/11399\/revisions\/41715"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/media\/25091"}],"wp:attachment":[{"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/media?parent=11399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/categories?post=11399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rapidseedbox.com\/es\/wp-json\/wp\/v2\/tags?post=11399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}