Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Scrape = Raspar, Escarbar

Slide 3

Slide 3 text

El termino se utiliza ya que para obtener la información no lo hacemos por medio de un servicio restful o descargando algo de la página sino escudriñando en la información publica que nos dan, "escarbando" el sitio web para obtener lo que alli se presenta.

Slide 4

Slide 4 text

• Marketing de contenidos • Visibilidad en Redes Sociales • Visibilidad de Marca en Internet • Big Data

Slide 5

Slide 5 text

Algo que hay que tomar en cuenta es que hacer scraping de una página web puede desacatar sus terminos de servicio. Por lo que es importante asegurarse de que ese no es el caso, por ejemplo Twitter prohibe completamente hacer scraping en su página. Los dueños de sitios web pueden usar un archivo /robots.txt para darle instrucciones a los bots acerca de su sitio web; este es llamado The Robots Exclusion Protocol.

Slide 6

Slide 6 text

Si un robot quiere visitar el sitio Web http://www.ejemplo.com/index.html Antes de eso revisa el http://www.ejemplo.com/robots.txt, y encuentra algo como esto: El "User-agent: *" significa que esta sección aplica a todos los robots. El "Disallow: /" le indica al robot que no esta permitido obtener información de ningúna de las páginas de este sitio. User-agent: * Disallow: /

Slide 7

Slide 7 text

Hay que tomar en cuenta que los robots podrían ignorar el /robots.txt especialmente si son robots de malware que buscan vulnerabilidades en la seguridad. A demás de ello hay que estar consientes de que el /robots.txt es público, por lo que cualquiera podría ver que es lo que no quieres mostrar. Por lo que el /robots.txt no sirve para ocultar información.

Slide 8

Slide 8 text

Podemos encontrar información de algunos Robots registrados en el siguiente link: http://www.robotstxt.org/db.html En el /robots.txt podemos establecer que permisos le damos a estos robots, por nombre o bien bloquearlos. Sin embargo el robot podría ignorar esto.

Slide 9

Slide 9 text

Imagina una vida sin Google, o sin Bing que según la información que ronda en internet, hace scraping a Google para obtener algunos de sus datos.

Slide 10

Slide 10 text

• Terminos y Condiciones de Servicio • Contenido Público

Slide 11

Slide 11 text

Podemos diseñar un robot que haga un scraping de datos concretos de una web y los podamos utilizar para generar nuestro propio contenido.

Slide 12

Slide 12 text

Podemos utilizar los datos de un scraping para interactuar a través de un robot con usuarios en redes sociales. Por ejemplo: crear un bot en instagram que seleccione los links de cada foto y luego programar un comentario en cada entrada.

Slide 13

Slide 13 text

A través del scraping podemos automatizar la posición por la que varios artículos de nuestra web se posicionan en Google o, por ejemplo, controlar la presencia del nombre de nuestra marca en determinados foros.

Slide 14

Slide 14 text

A veces es necesario obtener una gran cantidad de datos desde una o varias páginas sin embargo hacerlo manualmente es bastante complicado.

Slide 15

Slide 15 text

Python BeautifulSoup4

Slide 16

Slide 16 text

$ easy_install pip $ pip install BeautifulSoup4

Slide 17

Slide 17 text

First Scraping

Hello World

Slide 18

Slide 18 text

1. : Los documentos HTML deben iniciar con una declaración de tipo. 2. El documento HTML esta contenido en and . 3. El meta y los scripts estan contenidos entre y . 4. La parte Visible esta contenida entre y . 5. Los titulos se definen con tags

hasta

. 6. Los parrafos tienen tag

. De ello obtendremos algo como lo siguiente:

.

Slide 19

Slide 19 text

# importar las librerias import requests from bs4 import BeautifulSoup # especificar el URL URL = ‘http://jarroba.com/' # Realizamos la petición a la web req = requests.get(URL)

Slide 20

Slide 20 text

#Comprobamos que la petición #nos devuelve un Status Code = 200 status_code = req.status_code if status_code == 200: # Pasamos el contenido HTML de la web a un #objeto BeautifulSoup() html = BeautifulSoup(req.text, "html.parser")

Slide 21

Slide 21 text

# Obtenemos todos los divs donde están las entradas #entradas = html.find_all('div', {'class': 'col-md-4 col-xs-12'}) # Recorremos todas las entradas para extraer #el título, autor y fecha for item, entrada in enumerate(entradas):

Slide 22

Slide 22 text

# Con el método "getText()" no nos devuelve el HTML titulo = entrada.find('span', {'class': 'tituloPost'}).getText() autor = entrada.find('span', {'class': 'autor'}) fecha = entrada.find('span', {'class': 'fecha'}).getText() # Imprimo el Título, Autor y Fecha de las entradas print "%d - %s | %s | %s" % (i + 1, titulo, autor, fecha) else: print "Status Code %d" % status_code

Slide 23

Slide 23 text

El resultado de http://jarroba.com/ sería algo como lo siguiente: 1 - Sistema de numeración binario | Por: Ramón Invarato | 28-Jul-2017 2 - venv (entornos virtuales) en python | Por: Dionisio Cortes | 25-Jun-2017 3 - Como construir el JDK de Java 9 | Por: Dionisio Cortes | 03-Jun-2017 4 - Patrón Singleton en Python, con ejemplos | Por: Dionisio Cortes | 18- May-2017 5 - Inferencia tipos Java: El operador diamante | Por: Dionisio Cortes | 06- May-2017 6 - Gson (JSON) en Java, con ejemplos | Por: Ricardo Moya | 02-May-2017 7 - Unidades de medida de la información | Por: Ramón Invarato | 01-May- 2017 8 - 6 formas de mejorar el rendimiento en python | Por: Dionisio Cortes | 25- Abr-2017 9 - Scraping anónimo por la red TOR | Por: Ricardo Moya | 12-Abr-2017

Slide 24

Slide 24 text

No content