Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018

4,636 views

Published on

SEOPLUS

Published in: Technology
  • Be the first to comment

Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018

  1. 1. Scraping avanzado o Cómo hacer de internet tu base de datos by @estevecastells & @NachoMascort
  2. 2. Soy Esteve Castells International SEO Specialist @ Softonic Puedes encontrarme en @estevecastells https://estevecastells.com/ Newsletter: http://bit.ly/Seopatia Hola!
  3. 3. Hola! Soy Nacho Mascort SEO Manager @ Grupo Planeta Puedes encontrarme en: @NachoMascort https://seohacks.es Puedes mirar mis scripts en: https://github.com/NachoSEO
  4. 4. ¿Qué vamos a ver? 1. ¿Qué es el scraping y para qué sirve? 2. Mitos sobre el scraping 3. Principales usos a. En nuestro sitio web b. En sitios web externos 4. Entendiendo el DOM 5. Métodos de extracción 6. Herramientas de Scraping 7. Scraping con Python 8. Tips 9. Casos prácticos 10. Bonus by @estevecastells & @NachoMascort
  5. 5. 1. ¿Qué es el scraping y para qué sirve?
  6. 6. 1.1 ¿Qué es el scraping? El scraping o web scraping, es una técnica con la que mediante software, se extrae información o contenido de un sitio web. Existen desde ‘scrapers’ sencillos que parsean el HTML de un sitio web, a navegadores que renderizan JS y realizan tareas de navegación y extracción complejas.
  7. 7. 1.2 ¿Para qué sirve? Los usos del scraping son infinitos, solo los limitan tu creatividad y la legalidad de tus acciones. Los usos más básicos pueden ser comprobar cambios en tu propia web o en la de un competidor, hasta crear sitios webs dinámicos en base a múltiples fuentes de datos.
  8. 8. 2. Mitos del Scraping
  9. 9. 3. Principales usos
  10. 10. 3.1 Principales usos en nuestros sitios web Control del valor de ciertas etiquetas HTML - ¿Están todos los elementos tal y como hemos definido en nuestra documentación? - Comprobaciones de deploys - ¿Estamos mandando señales contradictorias? - HTTP Headers - Sitemaps vs metas - Duplicidad de etiquetas - Localización incorrecta de etiquetas - Desaparición de etiquetas
  11. 11. 3.2 Principales usos en sitios web externos ● Automatizar procesos: lo que haría un humano y te puedes ahorrar ○ Cambios visuales ■ ¿Están añadiendo funcionalidades nuevas? ○ Cambios en el HTML (metas, etc) ■ ¿Están añadiendo nuevo marcaje Schema o cambiando su estrategia de indexación? ○ Cambios de contenido ■ ¿Actualizan/curan su contenido? ● Monitorizar cambios de rankings en Google
  12. 12. 4. Entendiendo el DOM
  13. 13. DOCUMENT OBJECT MODEL Modelo de Objetos del Documento
  14. 14. 4.1 Document Object Model ¿Qué es? Es la representación estructural de un documento.
  15. 15. Define la jerarquía de cada elemento dentro de cada página.
  16. 16. Depende de su posición una etiqueta puede ser: ● Child ● Parent ● Sibiling (hermano)
  17. 17. 4.1 Document Object Model ¿Componentes de una web? Nuestro navegador hace una petición get hacia el servidor y este nos devuelve varios archivos para que el navegador lo pueda renderizar. Estos archivos suelen ser: ➜ HTML ➜ CSS ➜ JS ➜ Imágenes ➜ ...
  18. 18. 4.2 Código fuente vs DOM Son dos cosas distintas. Puedes consultar cualquier HTML de un site escribiendo en la barra del navegador: view-source: https://www.dominio.tld/ruta *Con CSS y JS no hace falta porque el navegador no los renderiza ** Ctrl / Cmd + u
  19. 19. ¿Cual es el código fuente?
  20. 20. ¿Cual es el código fuente? >>> view-source:
  21. 21. 4.2 Código fuente vs DOM En el código fuente (source code) no se ha ejecutado ningún JS. Depende del comportamiento del JS puedes obtener datos “falsos”.
  22. 22. 4.2 Código fuente vs DOM Si el código fuente no sirve, ¿qué hacemos? Podemos “ver” el DOM en la pestaña “Elements” en las herramientas de desarrolladores de Chrome (y cualquier otro navegador).
  23. 23. 4.2 Código fuente vs DOM
  24. 24. 4.2 Código fuente vs DOM O pulsando F12 ¡Los atajos molan más!
  25. 25. ¿Qué aparece en el DOM? >>> F12
  26. 26. Podemos ver cambios en tiempo real
  27. 27. 4.3 ¿Google que ve? Experimento de hace algo más de un año: La idea es modificar la etiqueta meta robots (mediante JS) de una URL para desindexar la página y ver si Google hace caso al valor que se encuentra en el código fuente o en el DOM. URL con la que experimentar: https://seohacks.es/dashboard/
  28. 28. 4.3 ¿Google que ve (experimento)? Se añade el siguiente código: <script> jQuery('meta[name="robots"]').remove(); var meta = document.createElement('meta'); meta.name = 'robots'; meta.content = 'noindex, follow'; jQuery('head').append(meta); </script>
  29. 29. 4.3 ¿Google que ve (experimento)? Lo que hace es: 1. Eliminar la etiqueta meta robots actual
  30. 30. 4.3 ¿Google que ve (experimento)? Lo que hace es: 1. Eliminar la etiqueta meta robots actual 2. Crea una variable llamada “meta” que almacena la creación de un elemento tipo “meta” (valga la redundancia)
  31. 31. 4.3 ¿Google que ve (experimento)? Lo que hace es: 1. Eliminar la etiqueta meta robots actual 2. Crea una variable llamada “meta” que almacena la creación de un elemento tipo “meta” (valga la redundancia) 3. Le añade los atributos “name” con valor “robots” y “content” con valor “noindex, follow”
  32. 32. 4.3 ¿Google que ve (experimento)? Lo que hace es: 1. Eliminar la etiqueta meta robots actual 2. Crea una variable llamada “meta” que almacena la creación de un elemento tipo “meta” (valga la redundancia) 3. Le añade los atributos “name” con valor “robots” y “content” con valor “noindex, follow” 4. Añade al head la variable meta que contiene la etiqueta con los valores que provocan una desindexación
  33. 33. 4.3 ¿Google que ve (experimento)? Transforma esto: En esto:
  34. 34. 4.3 Resultado
  35. 35. Más datos al respecto https://www.searchviu.com/en/javascript-canonical-tags/
  36. 36. 5. Métodos de extracción
  37. 37. 5. Métodos de extracción Podemos extraer la información de cada documento usando diferentes modelos bastante similares entre sí.
  38. 38. 5. Métodos de extracción Podemos extraer la información de cada documento usando diferentes modelos bastante similares entre sí. Estos son: ➜ Xpath ➜ Selectores de CSS ➜ Otros como regex o selectores de herramientas específicas
  39. 39. 5.1 Xpath Emplea “expresiones de ruta” (path expressions) para poder definir un nodo o varios dentro de un documento Podemos obtenerlos: ➜ Escribiendolos nosotros ➜ A través de las herramientas para desarrolladores dentro de un navegador
  40. 40. 5.1.1 Síntaxis de Xpath El standard de escritura es el siguiente: //etiqueta[@atributo=’valor’]
  41. 41. 5.1.1 Síntaxis de Xpath El standard de escritura es el siguiente: //etiqueta[@atributo=’valor’] Para esta etiqueta: <input id=”seoplus” type=”submit” value=”Log In”/>
  42. 42. 5.1.1 Síntaxis de Xpath //etiqueta[@atributo=’valor’] Para esta etiqueta: <input id=”seoplus” type=”submit” value=”Log In”/> ➜ Etiqueta: input
  43. 43. 5.1.1 Síntaxis de Xpath //etiqueta[@atributo=’valor’] Para esta etiqueta: <input id=”seoplus” type=”submit” value=”Log In”/> ➜ Etiqueta: input ➜ Atributos: ○ Id ○ Type ○ Value
  44. 44. 5.1.1 Síntaxis de Xpath //etiqueta[@atributo=’valor’] Para esta etiqueta: <input id=”seoplus” type=”submit” value=”Log In”/> ➜ Etiqueta: input ➜ Atributos: ○ Id = seoplus ○ Type = Submit ○ Value = Log In
  45. 45. 5.1.1 Síntaxis de Xpath //input[@id=’seoplus’]
  46. 46. 5.1.2 Dev Tools
  47. 47. 5.1.2 Dev Tools
  48. 48. 5.2 CSS Selectors Tal y como indica su nombre son los mismos selectores que usamos para escribir CSS. Podemos obtenerlos: ➜ Escribiendolos nosotros con la misma sintaxis que modificando los estilos de un site ➜ A través de las herramientas para desarrolladores dentro de un navegador *tip: para seleccionar etiqueta podemos usar la sintaxis de xpath y eliminar el @ del atributo
  49. 49. 5.2.1 Dev Tools
  50. 50. 5.3 Xpath vs CSS Xpath CSS Direct Child //div/a div > a Child o Subchild //div//a div a ID //div[@id=”ejemplo”] #ejemplo Clase //div[@clase=”ejemplo”] .ejemplo Atributos //input[@name='username'] input[name='user name'] https://saucelabs.com/resources/articles/selenium-tips-css-selectors
  51. 51. 5.4 Otros Podemos acceder a ciertos nodos del DOM mediante otros métodos como: ➜ Regex ➜ Selectores específicos de librerías de python ➜ Herramientas adhoc
  52. 52. 6. Herramientas de Scraping
  53. 53. Algunas de las decenas de herramientas que existen Plugins Herramientas varias Scraper Jason The Miner Si no te convencen, aquí tienes más de 30 herramientas: https://www.octoparse.com/blog/top-30-free-web-scraping-software/
  54. 54. Desde herramientas básicas o plugins que nos sirven para hacer scrapings básicos, en algunos casos para sacar datos más rápidamente sin necesidad de sacar Python o JS a relucir a herramientas un poco más ‘avanzadas’, aunque todas tienen una curva de aprendizaje muy baja. ➜ Scraper ➜ Screaming Frog ➜ Google Sheets ➜ Grepsr 6.1 Herramientas de scraping
  55. 55. Scraper es una plugin de Google Chrome que puedes usar para hacer pequeños scrapings de elementos en un HTML mínimamente bien estructurado. También nos sirve para sacar el XPath cuando a veces Google Chrome Dev Tools no lo saca bien para utilizarlo en otras herramientas. Como punto a favor, trabaja como Google Chrome Dev Tools sobre DOM 6.1.1 Scraper
  56. 56. 1. Doble clic encima del elemento que queremos sacar 2. Clicar en ‘Scrape similar’ 3. ¡Voilà! 6.1.1 Scraper
  57. 57. Si los elementos están bien estructurados, podremos sacar todo extremadamente fácilmente, sin necesidad de usar programas terceros o programación 6.1.1 Scraper
  58. 58. 6.1.1 Scraper Xpath para usarlo en otra herramienta/ programación
  59. 59. 6.1.1 Scraper Listado de elementos que vamos a sacar. Soporta múltiples columnas
  60. 60. 6.1.1 Scraper Copypaste fácil y lo exportamos a Excel
  61. 61. 6.1.1 Scraper Exportarlo directamente a Google Docs con 1 clic
  62. 62. 6.1.1 Scraper Para scrapear enlace o enlace+texto añadir “/a” al final y “@href” dependiendo del caso
  63. 63. Screaming Frog es una de las herramientas SEO por excelencia, que también nos puede servir para hacer scraping básico (e incluso avanzado). Al ser un crawler puedes usar Text only (HTML puro) o JS rendering, si tu web usa client- side rendering. Su modo de extracción es simple pero con él puedes conseguir gran parte de lo que necesitarás hacer, para lo otro puedes usar Python o otras herramientas. 6.1.2 Screaming Frog
  64. 64. 6.1.2 Screaming Frog Configuration > Custom > Extraction
  65. 65. 6.1.2 Screaming Frog Tenemos varios modos. - CSS path (CSS selector) - XPath (el que usaremos principalmente) - Regex
  66. 66. 6.1.2 Screaming Frog Tenemos hasta 10 selectores, que generalmente será suficiente. Sino, nos tocará usar Excel con la función BUSCARV para juntar dos o más scrapings
  67. 67. 6.1.2 Screaming Frog Deberemos luego decidir si queremos extraer el contenido dentro del HTML, solo texto o el elemento HTML entero
  68. 68. 6.1.2 Screaming Frog Una vez tenemos todos los extractores puestos, tan solo debemos ejecutarlo, ya sea en modo crawler o modo lista con un sitemap.
  69. 69. 6.1.2 Screaming Frog Una vez tengamos configurado todo perfecto (a veces tendremos que estar probando varias veces el XPath correcto), ya podremos dejarlo crawleando y exportar los datos obtenidos.
  70. 70. 6.1.2 Screaming Frog Algunos de los usos más habituales son, tanto en webs originales como competidores. ➜ Monitorizar cambios/datos perdidos en un deploy ➜ Monitorizar cambios semanales en el contenido de la web ➜ Comprobar aumento o decrecimiento de cantidad o ratios de contenido/thin content El límite del scraping con Screaming Frog. Puedes hacer el 99% de las cosas que quieres (sacar elementos on-page, etc) con JS-rendering fácil!
  71. 71. 6.1.2 Screaming Frog Cutre tip: Un uso ‘cutre’ para sacar todas las URLs de un sitemap index es importando todo el listado y limpiando con Excel luego. Por si no sabes (aún) usar Python. 1. Nos vamos a Download Sitemap index 2. Ponemos la URL del sitemap index
  72. 72. 6.1.2 Screaming Frog 3. Esperamos a que descargue todo 4. Seleccionamos todo y hacemos copypaste en Excel
  73. 73. 6.1.2 Screaming Frog Luego hacemos reemplazar con “Found “ y tendremos todas las URLs limpias de un sitemap index. De esta manera podemos luego limpiar y sacar por patrones de URL las que nos interesen. Ej: una categoría, una tipología, que contengan X palabra en la URL, etc. De esa forma podremos segmentar incluso más nuestro scraping ya sea de nuestra web o de la web de un competidor.
  74. 74. 6.1.3 Cloud version: FandangoSEO Si necesitas correr crawls intensivos de millones de páginas con segmentación por pagetype, con FandangoSEO puedes poner XPaths interesantes con extracción de contenido, count y exists.
  75. 75. 6.1.4 Google Sheets Con Google Sheets también podemos importar la mayoría de elementos de una página web, desde HTML hasta JSON con un pequeño script externo.. Pro’s: ➜ Importa HTML, CSV, TSV, XML, JSON y RSS. ➜ Hosteado en la nube ➜ Gratis y para toda la família ➜ Fácil de usar con funciones conocidas Con’s: ➜ Se queda pillado fácilmente y suele tardar en procesar miles de filas
  76. 76. 6.1.4 Google Sheets ➜ Importando feeds fácilmente para crear tu propio Feedly o agregador de noticias
  77. 77. 6.1.5 Grepsr Grepsr es una herramienta que se basa en una extensión que facilita hacer la extracción de manera visual, además ofrece exportar datos en formato csv o API (json)
  78. 78. Primero de todo instalaremos la extensión en Chrome y la ejecutaremos, cargando la página deseada a scrapear. 6.1.5 Grepsr
  79. 79. Luego, haremos clic en ‘Select’ y seleccionaremos el elemento exacto que queremos, haciendo hover con el mouse podremos refinar. 6.1.5 Grepsr
  80. 80. Una vez seleccionado, nos quedará marcado con el elemento y si está bien estructurado el HTML, nos será muy fácil sin tener que sacar XPath o CSS selectors. 6.1.5 Grepsr
  81. 81. Una vez seleccionadas todos nuestros campos, vamos a proceder a guardarlos haciendo clic en Next, podemos dar nombre a cada campo y extrarlo en forma de texto o extraer la propia classe CSS. 6.1.5 Grepsr
  82. 82. Finalmente, podremos añadir paginación para cada uno de nuestros campos, si así lo requieren, tanto en HTML con un next link, así como si tiene load more o infinite scroll (ajax) 6.1.5 Grepsr
  83. 83. 6.1.5 Grepsr Para seleccionar la paginación, seguiremos el mismo proceso que con los elementos a scrapear. (Parte opcional, no todo requiere de paginación)
  84. 84. 6.1.5 Grepsr Finalmente, también podremos configurar un login si es necesario, así como campos adiccionales que tengan cercanía al campo extraído (imágenes, metas, etc).
  85. 85. 6.1.5 Grepsr Finalmente, ya tendremos los datos tanto en formato JSON como CSV. Eso sí, necesitaremos una cuenta (gratis) en Grepsr para poder exportarlos!
  86. 86. 7. Scraping con Python
  87. 87. 7 ¿Porque Python? ➜ Es un lenguaje muy sencillo de entender ➜ Fácil aproximación para los que empiezan con la programación ➜ Mucho crecimiento y gran comunidad detrás ➜ Usos core para análisis de datos masivos y con librerías muy potentes detrás (no solo de scraping) ➜ ¡Podemos trabajar en el navegador! ○ https://colab.research.google.com
  88. 88. 7.1 Tipos de datos Para empezar a scrapear debemos conocer como mínimo estos conceptos para programar en python: ➜ Variables ➜ Listas ➜ Integers, Floats, Strings, Boolean Values… ➜ Ciclos for ➜ Condicionales ➜ Librerías
  89. 89. 7.2 Librerías para Scrapear Existen varias pero me centraré en dos: ➜ Requests + BeautifulSoup: Para scrapear datos del código fuente de un site. Útil para sites con datos estáticos ➜ Selenium: Herramienta para automatizar que nos puede ayudar a scrapear sites con contenido dinámico cuyos valores están en el DOM pero no en el código fuente. *Colab no soporta selenium, tendremos que trabajar con Jupyter (o cualquier IDE)
  90. 90. Con 5 líneas de código (o menos) podéis ver el HTML parseado
  91. 91. Acceder a cualquier elemento del HTML parseado es sencillo
  92. 92. Podemos crear un dataframe y tratar la información al gusto
  93. 93. O descargarla
  94. 94. 7.3 Proceso Analizamos el HTML, en busca de patrones Generamos el script para un elemento o URL Ampliamos para que afecte a todos los datos
  95. 95. 8. Tips
  96. 96. Hay muchos sitios web que sirven sus páginas en base al User-agent. Algunas veces te interesará ser un dispositivo desktop, otro un móvil. A veces un Windows, otro un Mac. A veces un Googlebot, otras veces un bingbot. ¡Adapta cada scraping a lo que necesites para obtener los resultados deseados! 8.1 User-agent
  97. 97. Para scrapear un sitio web como Google con mecanismos avanzados de seguridad, será necesario el uso de proxies, entre otras medidas. Los proxies, hacen de intermediario entre una petición que realiza un ordenador X a un servidor Z. De esta forma, dejamos poco rastro a la hora de ser identificados. Depende del sitio web y número de peticiones se recomienda usar una cantidad u otra. Por lo general, más de una petición por segundo desde la misma IP no es recomendable. 8.2 Proxies
  98. 98. Generalmente el uso de proxies es más recomendable que un VPN, ya que el VPN hace lo mismo pero bajo una única IP. Siempre es recomendable usar un VPN con otra geo para cualquier tipo de rastreo en webs de terceros, para evitar posible problemas o identificaciones. Además, si te capan por IP (ej: Cloudflare) nunca más podrás acceder a la web desde esa IP (si es estática). Servicio VPN recomendado: ExpressVPN 8.3 VPN’s
  99. 99. La concurrency consiste en limitar el número de peticiones que puede hacer una red por segundo. Nos interesa limitar las peticiones que hacemos siempre, para evitar saturar el servidor, ya sea el nuestro o el de un competidor. Si saturamos el servidor, deberemos volver a realizar las peticiones o en según que caso, volver a empezar todo el proceso de crawling Números orientativos: ➜ Webs pequeñas: 5 req/seg - 5 hilos ➜ Webs grandes: 20 req/seg - 20 hilos 8.4 Concurrency
  100. 100. Es habitual que después de un scraping de datos, nos encontramos con datos que no encajan. Normalmente, tendremos que trabajar los datos para limpiarlos. Algunas de las correcciones más habituales: ➜ Duplicados ➜ Corrección/unificación de formatos ➜ Espacios ➜ Caracteres extraños ➜ Currencias 8.5 Data cleaning
  101. 101. 9. Casos prácticos
  102. 102. 9. Casos prácticos A continuación veremos 2 casos prácticos: 1. Utilizando el scraping para automatizar la curación de contenidos para listados 2. Scrapeando para generar un feed de producto para nuestras webs
  103. 103. Utilizando el scraping para automatizar la curación de contenidos para listados
  104. 104. 9.1 Utilizando el scraping para automatizar la curación de contenidos para listados Se puede decir con firmeza, que el mejor buscador en la actualidad es Google. ¿Y si usamos los resultados de Google para generar nuestros propios listados, basado en el ranking que da él a webs que posicionan por lo que nosotros queremos posicionar?
  105. 105. 9.1.1 Jason The Miner Para hacer esto, usaremos Jason The Miner, una librería de scraping que ha hecho Marc Mignonsin, Principal Software Engineer en Softonic (@mawrkus) en Github y (@crossrecursion) en Twitter
  106. 106. 9.1.1 Jason The Miner Jason The Miner es una librería basada en Node.js versátil y modular que puede adaptarse a cualquier web y necesidad
  107. 107. 9.1.1 Jason The Miner aa
  108. 108. 9.1.2 Concepto Lanzamos una query como ‘mejores lavadoras’. Entraremos en top 20-30 resultados, analizaremos HTML y extraemos la ID de los links de Amazon. Luego haremos un conteo y estaremos validando automáticamente en base a decenas de webs cuál es la mejor lavadora.
  109. 109. 9.1.2 Concepto Entonces, tendremos un listado de IDs con su URL, que podremos scrapear directamente de Google Play o usando su API, y rellenar semi- automáticamente nuestro CMS (WordPress, o lo que tengamos). Esto nos permite automatizar la research/curación de contenido y focalizarnos en aportar realmente valor en lo que escribimos.
  110. 110. 9.1.3 Acción Primero de todo vamos a generar la base para crear la URL, con nuestro user-agent, así como el lenguaje que nos interesa.
  111. 111. 9.1.3 Acción Luego vamos a generar una concurrencia máxima para que Google no nos banee la IP o nos salten captchas.
  112. 112. 9.1.3 Acción Finalmente, vamos a definir exactamente el flow del crawler. Si necesita entrar en enlaces/webs, y qué tiene que extraer de ellos.
  113. 113. 9.1.3 Acción Finalmente, vamos a transformar el output en un archivo .json que podremos usar para subir a nuestro CMS.
  114. 114. 9.1.3 Acción Y podemos incluso configurar que se suba automáticamente al CMS una vez se han acabado de ejecutar los procesos.
  115. 115. 9.1.3 Acción ¿Qué hace Jason The Miner? 1. Load (HTTP, file, json, ...) 2. Parse (HTML w/ CSS by default) 3. Transform Pero esto se nos queda corto, necesitamos hacerlo en bulk para decenas o centenares de casos, no podemos hacerlo uno a uno.
  116. 116. 9.1.3 Acción Añadimos funcionalidad para que funcione en bulk 1. Bulk (importado de un CSV) 2. Load (HTTP, file, json, ...) 3. Parse (HTML w/ CSS by default) 4. Transform Creando una variable que sería la query que insertamos en Google.
  117. 117. 9.1.4 CMS Una vez tenemos todos los datos insertados en nuestro CMS, tendremos que ejecutar otro proceso de scraping básico o con una API como la de Amazon para sacar todos los datos de cada producto (logo, nombre, imagenes, descripción, etc). Una vez lo tengamos todo, los listados ya estarán ordenados y podemos añadir el contenido editorial que queramos, con muy poco trabajo manual a hacer.
  118. 118. 9.1.5 Ideas Ejemplos en los que se podría aplicar: ➜ Productos de Amazon ➜ Listados de restaurantes que están en TripAdvisor ➜ Listados de hoteles ➜ Listados de películas en Netflix ➜ Mejores juegos de PS4 ➜ Mejores apps de android ➜ Mejores apps de Chromecast ➜ Mejores libros
  119. 119. Scrapeando para generar un feed de producto para nuestras webs
  120. 120. 9.2 Punto de partida Web afiliada a Casa del Libro. Necesitamos generar un feed de productos para cada una de nuestras páginas de producto.
  121. 121. 9.2 Proceso Analizamos el HTML, en busca de patrones Generamos el script para un elemento o URL Ampliamos para que afecte a todos los datos
  122. 122. 9.2.0 ¿Qué queremos scrapear? 1. Necesitamos los siguientes datos: a. Titulos b. Autor c. Editorial d. Precios *Solo de la categoría novela negra
  123. 123. 9.2.0 ¿Qué queremos scrapear? Titulo
  124. 124. 9.2.0 ¿Qué queremos scrapear?
  125. 125. 9.2.0 ¿Qué queremos scrapear? Autor/a
  126. 126. 9.2.0 ¿Qué queremos scrapear?
  127. 127. 9.2.0 ¿Qué queremos scrapear? 1. Necesitamos los siguientes datos: a. Titulos b. Autor c. Editorial d. Precios Editorial
  128. 128. 9.2.0 ¿Qué queremos scrapear?
  129. 129. 9.2.0 ¿Qué queremos scrapear? 1. Necesitamos los siguientes datos: a. Titulos b. Autor c. Editorial d. Precios Precio
  130. 130. 9.2.0 ¿Qué queremos scrapear?
  131. 131. 9.2.0 ¿Dónde encontramos lo que queremos scrapear?
  132. 132. 9.2.0 ¿Dónde encontramos lo que queremos scrapear?
  133. 133. 9.2.0 ¿Hay paginaciones? Para cada paginación tendremos que iterar el mismo código una y otra vez. Hay que averiguar cómo se forman las URLs paginadas para poder acceder a ellas: >>>https://www.casadellibro.com/libros/novela-negra/126000000/p + pagina
  134. 134. 9.2.1 Generamos el script para extraer el primer libro
  135. 135. 9.2.1 Iteramos en cada container
  136. 136. 9.2.1 Es hora de finalizar Ahora que ya tenemos el script para scrapear todos los libros de la primera página vamos a generar el script final para que afecte a todas las paginaciones.
  137. 137. 9.2.2 Hagamos el script Importamos todas las librerías que vamos a usar
  138. 138. 9.2.2 Hagamos el script Creamos las listas en las que alojar cada uno de los datos.
  139. 139. 9.2.2 Hagamos el script Tendremos una lista que contiene los números del 1 al 120 para las paginaciones
  140. 140. 9.2.2 Hagamos el script Creamos variables para evitar que el server nos banee por exceso de peticiones
  141. 141. 9.2.2 Hagamos el script
  142. 142. 9.2.2 Hagamos el script
  143. 143. 9.2.2 Hagamos el script Con Pandas transformamos las listas en un DataFrame que podemos trabajar
  144. 144. 9.2.2 Hagamos el script
  145. 145. Con Pandas también podemos transformarlo en un csv o en un excel 9.2.2 Hagamos el script
  146. 146. Y por último, podemos descargar el archivo gracias a la librería de colab. 9.2.2 Hagamos el script
  147. 147. 10. Bonus
  148. 148. 10.1 Sheet2Site
  149. 149. 10.1 Sheet2Site
  150. 150. 10.1 Sheet2Site https://coinmarketcap.com/es/api/
  151. 151. Se puede utilizar Google Sheets para importar datos de APIs fácilmente. API’s como Dandelion API que sirven para hacer análisis de semántica de textos, pueden ser muy útiles para el día a día de nuestro SEO. ➜ Extracción de entidades ➜ Similaridad semántica ➜ Extracción de keywords ➜ Análisis de sentimentos 10.2 Dandelion API
  152. 152. Stack Andreas Niessen Stack Proyectos Avanzados 10.3 Stacks de scraping + WP + + + ++
  153. 153. ➜ Con este pequeño script podrás exportar toda una SERP fácilmente en un CSV. ○ bit.ly/2uZCXuL 10.4 Scraping Google SERP
  154. 154. 10.5 Scrapeando Google
  155. 155. 10.6 Scrapeando + NLP
  156. 156. 10.7 Scrapeando Breadcrumbs
  157. 157. 10.8 Scrapeando Sitemaps https://github.com/NachoSEO/extract_urls_from_sitemap_index
  158. 158. 10.9 Traduciendo contenido
  159. 159. Python & Otros ➜ Chapter 11 – Web Scraping https://automatetheboringstuff.com/chapter11/ ➜ https://twitter.com/i/moments/949019183181856769 ➜ Scraping ‘People Also Ask’ boxes for SEO and content research https://builtvisible.com/scraping-people-also-ask-boxes-for-seo- and-content-research/ ➜ https://stackoverflow.com/questions/3964681/find-all-files-in-a- directory-with-extension-txt-in-python ➜ 6 Actionable Web Scraping Hacks for White Hat Marketers https://ahrefs.com/blog/web-scraping-for-marketers/ ➜ https://saucelabs.com/resources/articles/selenium-tips-css- selectors RECURSOS ADICIONALES
  160. 160. RECURSOS ADICIONALES Node.js (Thanks @mawrkus) ➜ Web Scraping With Node.js: https://www.smashingmagazine.com/2015/04/web-scraping-with- nodejs/ ➜ X-ray, The next web scraper. See through the noise: https://github.com/lapwinglabs/x-ray ➜ Simple, lightweight & expressive web scraping with Node.js: https://github.com/eeshi/node-scrapy ➜ Node.js Scraping Libraries: http://blog.webkid.io/nodejs-scraping- libraries/ ➜ https://www.scrapesentry.com/scraping-wiki/web-scraping-legal-or- illegal/ ➜ http://blog.icreon.us/web-scraping-and-you-a-legal-primer-for-one-of- its-most-useful-tools/ ➜ Web scraping o rastreo de webs y legalidad: https://www.youtube.com/watch?v=EJzugD0l0Bw
  161. 161. ¿QUIERES TRABAJAR CON ESTEVE EN SOFTONIC? ➜ Mail: esteve.castells@softonic.com ➜ LinkedIn: Esteve Castells ➜ Twitter: @estevecastells
  162. 162. CREDITS ➜ Presentation template by SlidesCarnival ➜ Photographs by Death to the Stock Photo (license) ➜ Marc Mignonsin for creating Jason The Miner
  163. 163. ¡Gracias! ¿Alguna pregunta? Esteve Castells | @estevecastells Newsletter: bit.ly/Seopatia https://estevecastells.com/ Nacho Mascort | @NachoMascort Scripts: https://github.com/NachoSEO https://seohacks.es

×